save and restore errno in destructor
diff --git a/libdaemon/dsignal.c b/libdaemon/dsignal.c
index 2593d42..f538395 100644
--- a/libdaemon/dsignal.c
+++ b/libdaemon/dsignal.c
@@ -116,6 +116,8 @@
 }
 
 void daemon_signal_done(void) {
+    int saved_errno = errno;
+
     if (_signal_pipe[0] != -1)
         close(_signal_pipe[0]);
 
@@ -123,6 +125,8 @@
         close(_signal_pipe[1]);
 
     _signal_pipe[0] = _signal_pipe[1] = -1;
+
+    errno = saved_errno;
 }
 
 int daemon_signal_next(void) {