summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2018-01-11 17:25:24 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2018-01-11 17:25:24 +0900
commitaf681a10915aadbc2af53522be03ba7c60af046a (patch)
tree3f676b8773cafb85b79ba69601f33adc9069b5e2
parent21c8e7311151931b88568ff11e604907182a8054 (diff)
downloadefl-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.c8
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