diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2018-01-11 17:25:24 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2018-01-11 17:25:24 +0900 |
commit | af681a10915aadbc2af53522be03ba7c60af046a (patch) | |
tree | 3f676b8773cafb85b79ba69601f33adc9069b5e2 | |
parent | 21c8e7311151931b88568ff11e604907182a8054 (diff) | |
download | efl-af681a10915aadbc2af53522be03ba7c60af046a.tar.gz |
ecore signal write - save and restore errno since may be on mainloop
now i disabled the signal thread watcher ... save+restore errno.
-rw-r--r-- | src/lib/ecore/ecore_signal.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/ecore/ecore_signal.c b/src/lib/ecore/ecore_signal.c index 4e0b4842ba..e640704212 100644 --- a/src/lib/ecore/ecore_signal.c +++ b/src/lib/ecore/ecore_signal.c @@ -11,6 +11,7 @@ #include <unistd.h> #include <assert.h> #include <fcntl.h> +#include <errno.h> #include <pthread.h> #include "Ecore.h" @@ -155,7 +156,12 @@ _ecore_signal_callback(int sig, siginfo_t *si, void *foo EINA_UNUSED) #endif sdata.sig = sig; sdata.info = *si; - if (sdata.sig >= 0) write(sig_pipe[1], &sdata, sizeof(sdata)); + if (sdata.sig >= 0) + { + int err = errno; + write(sig_pipe[1], &sdata, sizeof(sdata)); + errno = err; + } } static void |