On Fri, May 09, 2014 at 04:03:52PM +0200, Hardening wrote: > This patch handles the case where a signal event source can not be created. > --- > src/compositor.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/src/compositor.c b/src/compositor.c > index 6ad3387..047df8a 100644 > --- a/src/compositor.c > +++ b/src/compositor.c > @@ -4197,6 +4197,7 @@ int main(int argc, char *argv[]) > display = wl_display_create(); > > loop = wl_display_get_event_loop(display); > + memset(signals, 0, sizeof(signals));
We set all entries of signals[4], and they're going to be valid signal source pointers or NULL if the allocation fails. No need to memset. > signals[0] = wl_event_loop_add_signal(loop, SIGTERM, on_term_signal, > display); > signals[1] = wl_event_loop_add_signal(loop, SIGINT, on_term_signal, > @@ -4208,6 +4209,9 @@ int main(int argc, char *argv[]) > signals[3] = wl_event_loop_add_signal(loop, SIGCHLD, sigchld_handler, > NULL); > > + if (!signals[0] || !signals[1] || !signals[2] || !signals[3]) > + goto out_signals; > + > config = weston_config_parse("weston.ini"); > if (config != NULL) { > weston_log("Using config file '%s'\n", > @@ -4321,8 +4325,11 @@ int main(int argc, char *argv[]) > > wl_signal_emit(&ec->destroy_signal, ec); > > - for (i = ARRAY_LENGTH(signals); i;) > - wl_event_source_remove(signals[--i]); > + out_signals: > + for (i = ARRAY_LENGTH(signals); i; i--) { > + if (signals[i-1]) We can just add the if condition to the existing loop, no need to iterate in reverse. Kristian > + wl_event_source_remove(signals[i-1]); > + } > > weston_compositor_xkb_destroy(ec); > > -- > 1.8.1.2 > > _______________________________________________ > wayland-devel mailing list > wayland-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel