SV *sv;
for (;;) {
- sv = NEWSV(56, 80);
+ sv = NEWSV(56, 79);
if (sv_gets(sv, fp, 0) == Nullch) {
SvREFCNT_dec(sv);
break;
if(tmpsv ? SvROK(tmpsv) : SvROK(error)) {
if(tmpsv)
SvSetSV(error,tmpsv);
+ else if(sv_isobject(error)) {
+ HV *stash = SvSTASH(SvRV(error));
+ GV *gv = gv_fetchmethod(stash, "PROPAGATE");
+ if (gv) {
+ SV *file = sv_2mortal(newSVsv(GvSV(curcop->cop_filegv)));
+ SV *line = sv_2mortal(newSViv(curcop->cop_line));
+ EXTEND(SP, 3);
+ PUSHMARK(SP);
+ PUSHs(error);
+ PUSHs(file);
+ PUSHs(line);
+ PUTBACK;
+ perl_call_sv((SV*)GvCV(gv),
+ G_SCALAR|G_EVAL|G_KEEPERR);
+ sv_setsv(error,*stack_sp--);
+ }
+ }
pat = Nullch;
}
else {
TAINT_PROPER("umask");
XPUSHi(anum);
#else
- XPUSHs(&sv_undef)
+ XPUSHs(&sv_undef);
#endif
RETURN;
}
buf = SvPV(sv, na);
len = na;
}
- else if (SvOK(sv)) {
+ else {
aint = (int)SvIV(sv);
buf = (char*)&aint;
len = sizeof(int);