Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
-
None
-
None
-
windows
Description
The guththila parser seems to be non-reentrant, as there is a global location for the current message. I have a wsdl which includes an
XSD, and I parse both using two parsers. The inner one fails as it thinks the current message is whatever the outer one was parsing.
This can be fixed by moving the mesage into the parser struct:
/*- enum guththila_event_types guththila_event; */
typedef struct guththila_xml_pull_parser_s
{
guththila_buffer_t *buffer;
guththila_reader_t *reader;
guththila_token_t *prefix;
guththila_token_t *name;
guththila_token_t *value;
guththila_stack_t *stack;
guththila_stack_t *attrib;
guththila_stack_t *namesp;
guththila_stack_t *dep;
int _next;
int offset;
int last;
int unicode_state;
enum guththila_status status;
/+/ enum guththila_event_types guththila_event;
} guththila_xml_pull_parser_t;
Plus replace all occurences of guththila_event with parser->guthtila_event.