--- plymouth-0.8.2/debian/changelog 2010-04-27 09:35:37.000000000 +0100 +++ plymouth-0.8.2/debian/changelog 2010-05-04 04:02:02.000000000 +0100 @@ -1,3 +1,16 @@ +plymouth (0.8.2-2ubuntu3) lucid; urgency=low + + [ Tero Mononen ] + * debian/patches/limit_fsck_messages.patch (LP: #571707) + - in src/libply/ply-event-loop.c: function + ply_event_loop_handle_timeouts() tried dereference a null pointer + 'watch'. Workaround is to check whether 'watch' is NULL, and in that + case simply remove it from the list + - in src/libply/ply-list.c: remove the O(N^2) behaviour causing + assertion from the end of function ply_list_unlink_node() + + -- Arand Nash Tue, 04 May 2010 04:01:28 +0100 + plymouth (0.8.2-2ubuntu2) lucid; urgency=low * Don't call ply_boot_client_process_pending_requests on flush, because --- plymouth-0.8.2/debian/patches/limit_fsck_messages.patch 1970-01-01 01:00:00.000000000 +0100 +++ plymouth-0.8.2/debian/patches/limit_fsck_messages.patch 2010-05-04 02:49:30.000000000 +0100 @@ -0,0 +1,51 @@ +diff -bur plymouth-0.8.2/src/libply/ply-event-loop.c plymouth-0.8.2+tmo/src/libply/ply-event-loop.c +--- plymouth-0.8.2/src/libply/ply-event-loop.c 2010-04-27 17:13:51.613102399 +0300 ++++ plymouth-0.8.2+tmo/src/libply/ply-event-loop.c 2010-05-03 12:25:00.160729566 +0300 +@@ -1193,9 +1188,14 @@ + ply_event_loop_timeout_watch_t *watch; + + watch = (ply_event_loop_timeout_watch_t *) ply_list_node_get_data (node); ++ + next_node = ply_list_get_next_node (loop->timeout_watches, node); + +- if (watch->timeout <= now) ++ if (watch == NULL) ++ { ++ ply_list_remove_node (loop->timeout_watches, node); ++ } ++ else if (watch->timeout <= now) + { + assert (watch->handler != NULL); + +@@ -1218,7 +1218,6 @@ + + node = next_node; + } +- + } + + void +@@ -1247,8 +1245,9 @@ + timeout = MAX (timeout, 0); + } + +- number_of_received_events = epoll_wait (loop->epoll_fd, events, +- sizeof (events), timeout); ++ number_of_received_events = epoll_wait (loop->epoll_fd, ++ events, PLY_EVENT_LOOP_NUM_EVENT_HANDLERS, ++ timeout); + + ply_event_loop_handle_timeouts (loop); + +diff -bur plymouth-0.8.2/src/libply/ply-list.c plymouth-0.8.2+tmo/src/libply/ply-list.c +--- plymouth-0.8.2/src/libply/ply-list.c 2009-12-03 05:45:28.000000000 +0200 ++++ plymouth-0.8.2+tmo/src/libply/ply-list.c 2010-05-03 10:30:26.050794700 +0300 +@@ -223,7 +223,7 @@ + node->next = NULL; + + list->number_of_nodes--; +- assert (ply_list_find_node (list, node->data) != node); ++ // assert (ply_list_find_node (list, node->data) != node); + } + + void