… | |
… | |
998 | if (strEQ (s, "__DIE__" )) svp = &PL_diehook; |
998 | if (strEQ (s, "__DIE__" )) svp = &PL_diehook; |
999 | if (strEQ (s, "__WARN__")) svp = &PL_warnhook; |
999 | if (strEQ (s, "__WARN__")) svp = &PL_warnhook; |
1000 | |
1000 | |
1001 | if (svp) |
1001 | if (svp) |
1002 | { |
1002 | { |
1003 | sv_setsv (sv, *svp ? *svp : &PL_sv_undef); |
1003 | SV *ssv; |
|
|
1004 | |
|
|
1005 | if (!*svp) |
|
|
1006 | ssv = &PL_sv_undef; |
|
|
1007 | else if (SvTYPE (*svp) == SVt_PVCV) /* perlio directly stores a CV in warnhook. ugh. */ |
|
|
1008 | ssv = sv_2mortal (newRV_inc (*svp)); |
|
|
1009 | else |
|
|
1010 | ssv = *svp; |
|
|
1011 | |
|
|
1012 | sv_setsv (sv, ssv); |
1004 | return 0; |
1013 | return 0; |
1005 | } |
1014 | } |
1006 | } |
1015 | } |
1007 | |
1016 | |
1008 | return orig_sigelem_get ? orig_sigelem_get (aTHX_ sv, mg) : 0; |
1017 | return orig_sigelem_get ? orig_sigelem_get (aTHX_ sv, mg) : 0; |