]> mj.ucw.cz Git - libucw.git/blobdiff - lib/lizard-safe.c
OK, buck2obj looks nice now, so let us add it
[libucw.git] / lib / lizard-safe.c
index e265e96a7f647169facb7aebff3632c8efa1a5cd..1c46cbdcbb58d211cd27cfb5a316a8917f1d64ae 100644 (file)
@@ -37,7 +37,7 @@ void
 lizard_free(struct lizard_buffer *buf)
 {
   munmap(buf->start, buf->len + PAGE_SIZE);
-  sigaction(SIGSEGV, buf->old_sigsegv_handler, NULL);
+  unhandle_signal(SIGSEGV, buf->old_sigsegv_handler);
   xfree(buf->old_sigsegv_handler);
   xfree(buf);
 }
@@ -66,20 +66,18 @@ lizard_decompress_safe(byte *in, struct lizard_buffer *buf, uns expected_length)
   }
   volatile sh_sighandler_t old_handler = signal_handler[SIGSEGV];
   signal_handler[SIGSEGV] = sigsegv_handler;
-  int len, err;
+  int len;
   if (!setjmp(safe_decompress_jump))
   {
     buf->ptr = buf->start + buf->len - lock_offset;
     len = lizard_decompress(in, buf->ptr);
-    err = errno;
   }
   else
   {
     buf->ptr = NULL;
     len = -1;
-    err = EFAULT;
+    errno = EFAULT;
   }
   signal_handler[SIGSEGV] = old_handler;
-  errno = err;
   return len;
 }