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