ply_event_loop_process_pending_events (ply_event_loop_t *loop)
{
int number_of_received_events, i;
- static struct epoll_event *events = NULL;
+ struct epoll_event *events = NULL;
assert (loop != NULL);
- if (events == NULL)
- events =
- malloc (PLY_EVENT_LOOP_NUM_EVENT_HANDLERS * sizeof (struct epoll_event));
+ events =
+ alloca (PLY_EVENT_LOOP_NUM_EVENT_HANDLERS * sizeof (struct epoll_event));
memset (events, -1,
PLY_EVENT_LOOP_NUM_EVENT_HANDLERS * sizeof (struct epoll_event));
free (rows);
png_read_end (png, info);
ply_image_close_file (image);
+ png_destroy_read_struct (&png, &info, NULL);
image->width = width;
image->height = height;
}
free (logger->filename);
+ free (logger->buffer);
free (logger);
}
ply_logger_close_file (ply_logger_get_default ())
#define ply_flush_log() \
ply_logger_flush (ply_logger_get_default ())
+#define ply_free_log() \
+ ply_logger_free (ply_logger_get_default ())
#define ply_log(format, args...) \
ply_logger_inject (ply_logger_get_default (), format "\n", ##args)
#define ply_log_without_new_line(format, args...) \
ply_logger_inject (ply_logger_get_error_default (), format "\n", ##args)
#define ply_error_without_new_line(format, args...) \
ply_logger_inject (ply_logger_get_error_default (), format, ##args)
+#define ply_free_error_log() \
+ ply_logger_free (ply_logger_get_error_default ())
#define ply_toggle_tracing() \
ply_logger_toggle_tracing (ply_logger_get_error_default ())
if (!ply_open_unidirectional_pipe (&sender_fd, &receiver_fd))
return NULL;
- handle = calloc (1, sizeof (int));
pid = fork ();
}
close (receiver_fd);
+ handle = calloc (1, sizeof (int));
*handle = sender_fd;
return (ply_daemon_handle_t *) handle;
{
if (entry == NULL)
return;
-
+ ply_image_free (entry->text_field_image);
+ ply_image_free (entry->bullet_image);
free (entry);
}
{
if (window == NULL)
return;
+ free(window->tty_name);
if (window->loop != NULL)
ply_event_loop_stop_watching_for_exit (window->loop,
{
ply_log ("\nSession finished...exiting logger\n");
ply_flush_log ();
+ ply_free_log ();
ply_event_loop_exit (state->loop, 1);
}
ply_trace ("exiting with code %d", exit_code);
+ ply_free_error_log();
+
return exit_code;
}
/* vim: set sts=4 ts=4 sw=4 expandtab autoindent cindent cino={.5s,(0: */
return server;
}
+static void ply_boot_connection_on_hangup (ply_boot_connection_t *connection);
+
void
ply_boot_server_free (ply_boot_server_t *server)
{
+ ply_list_node_t *node;
if (server == NULL)
return;
-
+ while (node = ply_list_get_first_node(server->connections))
+ {
+ ply_boot_connection_t *connection = ply_list_node_get_data (node);
+ ply_boot_connection_on_hangup (connection);
+ }
ply_list_free (server->connections);
ply_list_free (server->cached_answers);
free (server);
uint8_t argument_size;
if (!ply_read (connection->fd, &argument_size, sizeof (uint8_t)))
- return false;
+ {
+ free(command);
+ return false;
+ }
*argument = calloc (argument_size, sizeof (char));
if (!ply_read (connection->fd, *argument, argument_size))
- return false;
+ {
+ free(command);
+ return false;
+ }
}
return true;
}
strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_NAK)))
ply_error ("could not write bytes: %m");
+ free(command);
return;
}
server);
/* will reply later
*/
+ free(command);
return;
}
else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_CACHED_PASSWORD) == 0)
}
ply_buffer_free (buffer);
+ free(command);
return;
}
else if (strcmp (command, PLY_BOOT_PROTOCOL_REQUEST_TYPE_NEWROOT) == 0)
strlen (PLY_BOOT_PROTOCOL_RESPONSE_TYPE_NAK)))
ply_error ("could not write bytes: %m");
+ free(command);
return;
}
{
ply_error ("could not write bytes: %m");
}
+ free(command);
}
static void