- free(world.queue);
- world.queue = NULL;
- }
- else
- {
- char * new_queue = try_malloc(world.queue_size, f_name);
- memcpy(new_queue, &(world.queue[cutout_len]), world.queue_size);
- free(world.queue);
- world.queue = new_queue;
+ size_t cutout_len = strlen(world.queue);
+ if (0 < cutout_len)
+ {
+ cutout_len++;
+ message = try_malloc(cutout_len, f_name);
+ memcpy(message, world.queue, cutout_len);
+ }
+ for (;
+ cutout_len != world.queue_size && '\0' == world.queue[cutout_len];
+ cutout_len++);
+ world.queue_size = world.queue_size - cutout_len;
+ if (0 == world.queue_size)
+ {
+ free(world.queue); /* NULL so read_file_into_queue() may free() */
+ world.queue = NULL; /* this every time, even when it's */
+ } /* un-allocated first. */
+ else
+ {
+ char * new_queue = try_malloc(world.queue_size, f_name);
+ memcpy(new_queue, &(world.queue[cutout_len]), world.queue_size);
+ free(world.queue);
+ world.queue = new_queue;
+ }