X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=miniperlmain.c;h=39f8f193cdaf4ede059d0d2f60bc861fdf0651dd;hb=2e0a827f13b2065625fa468c74693fcff824b17f;hp=bda84e2c5870a85bff4c9b68524d013adb9da0c9;hpb=663f364bd429de50c8f5478879b1285d1270c1b3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/miniperlmain.c b/miniperlmain.c index bda84e2..39f8f19 100644 --- a/miniperlmain.c +++ b/miniperlmain.c @@ -9,7 +9,11 @@ */ /* - * "The Road goes ever on and on, down from the door where it began." + * The Road goes ever on and on + * Down from the door where it began. + * + * [Bilbo on p.35 of _The Lord of the Rings_, I/i: "A Long-Expected Party"] + * [Frodo on p.73 of _The Lord of the Rings_, I/iii: "Three Is Company"] */ /* This file contains the main() function for the perl interpreter. @@ -38,7 +42,7 @@ static void xs_init (pTHX); static PerlInterpreter *my_perl; -#if defined (__MINT__) || defined (atarist) +#if defined (atarist) /* The Atari operating system doesn't have a dynamic stack. The stack size is determined from this value. */ long _stksize = 64 * 1024; @@ -63,7 +67,7 @@ main(int argc, char **argv, char **env) #endif { dVAR; - int exitstatus; + int exitstatus, i; #ifdef PERL_GLOBAL_STRUCT struct perl_vars *plvarsp = init_global_struct(); # ifdef PERL_GLOBAL_STRUCT_PRIVATE @@ -112,6 +116,13 @@ main(int argc, char **argv, char **env) if (!exitstatus) perl_run(my_perl); + /* Unregister our signal handler before destroying my_perl */ + for (i = 0; PL_sig_name[i]; i++) { + if (rsignal_state(PL_sig_num[i]) == (Sighandler_t) PL_csighandlerp) { + rsignal(PL_sig_num[i], (Sighandler_t) SIG_DFL); + } + } + exitstatus = perl_destruct(my_perl); perl_free(my_perl);