struct sigaction;
void handle_signal(int signum, struct sigaction *oldact);
+void unhandle_signal(int signum, struct sigaction *oldact);
#endif
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);
}
if (sigaction(signum, &act, oldact) < 0)
die("sigaction: %m");
}
+
+void
+unhandle_signal(int signum, struct sigaction *oldact)
+{
+ if (sigaction(signum, oldact, NULL) < 0)
+ die("sigaction: %m");
+}