All pastes #938270 Raw Edit

Someone

public text v1 · immutable
·published 2008-03-11 14:40 UTC
rendered paste body
Index: src/xaml.cpp
===================================================================
--- src/xaml.cpp        (revision 97947)
+++ src/xaml.cpp        (working copy)
@@ -753,15 +753,15 @@
        if (p->error_args)
                return;

-       p->error_args = new ParserErrorEventArgs (message,
-                                                 p->file_name,
-                                                 XML_GetCurrentLineNumber (p->parser),
-                                                 XML_GetCurrentColumnNumber (p->parser),
-                                                 error_code,
-                                                 el, attr);
+       // if parsing fails too early it's not safe (i.e. sigsegv) to call some functions, e.g. XML_GetCurrentLineNumber
+       bool report_line_col = (error_code != XML_ERROR_XML_DECL);
+       int line_number = report_line_col ? XML_GetCurrentLineNumber (p->parser) : 0;
+       int char_position = report_line_col ? XML_GetCurrentColumnNumber (p->parser) : 0;

+       p->error_args = new ParserErrorEventArgs (message, p->file_name, line_number, char_position, error_code, el, attr);
+
        g_warning ("PARSER ERROR, STOPPING PARSING:  (%d) %s  line: %d   char: %d\n", error_code, message,
-                       p->error_args->line_number, p->error_args->char_position);
+                       line_number, char_position);

        XML_StopParser (p->parser, FALSE);
 }