Gisle Aas <[EMAIL PROTECTED]> writes:
> I've seen this before. Invoking perl_call_sv() without the G_EVAL
> flag (like HTML::Parser does) always get you in trouble after a while.
This patch cures the seg-fault.
===================================================================
RCS file: /cvsroot/libwww-perl/html-parser/hparser.c,v
retrieving revision 2.79
diff -u -p -u -r2.79 hparser.c
--- hparser.c 8 Mar 2002 03:49:23 -0000 2.79
+++ hparser.c 11 Mar 2002 17:28:41 -0000
@@ -541,10 +541,19 @@ report_event(PSTATE* p_state,
if ((enum argcode)*argspec == ARG_SELF && !SvROK(h->cb)) {
char *method = SvPV(h->cb, my_na);
- perl_call_method(method, G_DISCARD | G_VOID);
+ perl_call_method(method, G_DISCARD | G_EVAL | G_VOID);
}
else {
- perl_call_sv(h->cb, G_DISCARD | G_VOID);
+ perl_call_sv(h->cb, G_DISCARD | G_EVAL | G_VOID);
+ }
+
+ if (SvTRUE(ERRSV)) {
+#if defined(PERL_VERSION) && PERL_VERSION > 6 || (PERL_VERSION == 6 &&
+PERL_SUB_VERSION > 0)
+ croak(Nullch);
+#else
+ STRLEN my_na;
+ croak("%s", SvPV(ERRSV, my_na));
+#endif
}
FREETMPS;