httpd: fix handling of range requests
[oweals/busybox.git] / libbb / xfunc_die.c
index 357494d34e6718fb4152aca2ba2d38e81742da3a..73f7998e583f28bb2c70618314f25c5c626d6d41 100644 (file)
@@ -4,37 +4,19 @@
  *
  * Copyright (C) 2008 by Denys Vlasenko <vda.linux@googlemail.com>
  *
- * Licensed under GPLv2, see file LICENSE in this tarball for details.
+ * Licensed under GPLv2, see file LICENSE in this source tree.
  */
 
-/* Keeping it separate allows to NOT suck in stdio for VERY small applets.
+/* Keeping it separate allows to NOT pull in stdio for VERY small applets.
  * Try building busybox with only "true" enabled... */
 
 #include "libbb.h"
 
-int die_sleep;
-#if ENABLE_FEATURE_PREFER_APPLETS || ENABLE_HUSH
-jmp_buf die_jmp;
-#endif
+void (*die_func)(void);
 
-void xfunc_die(void)
+void FAST_FUNC xfunc_die(void)
 {
-       if (die_sleep) {
-               if ((ENABLE_FEATURE_PREFER_APPLETS || ENABLE_HUSH)
-                && die_sleep < 0
-               ) {
-                       /* Special case. We arrive here if NOFORK applet
-                        * calls xfunc, which then decides to die.
-                        * We don't die, but jump instead back to caller.
-                        * NOFORK applets still cannot carelessly call xfuncs:
-                        * p = xmalloc(10);
-                        * q = xmalloc(10); // BUG! if this dies, we leak p!
-                        */
-                       /* -2222 means "zero" (longjmp can't pass 0)
-                        * run_nofork_applet() catches -2222. */
-                       longjmp(die_jmp, xfunc_error_retval ? xfunc_error_retval : -2222);
-               }
-               sleep(die_sleep);
-       }
+       if (die_func)
+               die_func();
        exit(xfunc_error_retval);
 }