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;

Reply via email to