[ http://issues.apache.org/jira/browse/AXIS2C-43?page=comments#action_12365539 ]
Ed Slattery commented on AXIS2C-43: ----------------------------------- Applied a fix for this > Buffer growth not working in guththila > -------------------------------------- > > Key: AXIS2C-43 > URL: http://issues.apache.org/jira/browse/AXIS2C-43 > Project: Axis2-C > Type: Bug > Components: Pull Parser - Guththila > Environment: windows > Reporter: Ed Slattery > Priority: Minor > > I am not sure the current buffer growth in guththila is really growing the > buffer. It appears to me > to be growing the structure containing the buffer, but leaving the buffer at > its original size. > I also think the call to the growth routine may be reversing the new and old > offsets such that the final > offset if negative. Here are patches which I think are necessary. > from guththila_xml_pull_parser.c... > GUTHTHILA_DECLARE (int) > guththila_xml_pull_parser_read (guththila_environment_t * environment, > guththila_xml_pull_parser_t * parser) > { > int c = 0; > if (parser->_next == parser->buffer->size) > { > if (parser->offset > 0) > { > guththila_xml_pull_parser_relocate_tokens (environment, parser, > parser->offset); > guththila_xml_pull_parser_shift (environment, parser); > } > else > { > /*- guththila_buffer_t *b = NULL; > b = parser->buffer; */ > /*+*/ int b = parser->buffer->size; > parser->buffer = > guththila_buffer_grow (environment, parser->buffer); > /*- guththila_xml_pull_parser_relocate_tokens ( > environment, parser, (b->size - parser->buffer->size));*/ > /*+*/guththila_xml_pull_parser_relocate_tokens ( > /*+*/ environment, parser, (parser->buffer->size - b)); > } > } > c = guththila_reader_read (environment, (parser->buffer->buff), > (parser->_next), > (parser->buffer->size) - (parser->_next), > parser->reader); > parser->last += c; > return !c; > } > from guththila_buffer.c... > GUTHTHILA_DECLARE (guththila_buffer_t *) > guththila_buffer_grow (guththila_environment_t * environment, > guththila_buffer_t * name) > { > /*+*/guththila_char_t *x = NULL; > /*- guththila_buffer_t *x = NULL; */ > name->size <<= 1; > /*+*/x = (guththila_char_t *) GUTHTHILA_REALLOC (environment->allocator, > /*+*/ name->buff,name->size); > /*- x = (guththila_buffer_t *) GUTHTHILA_REALLOC (environment->allocator, > name, name->size); */ > if (x) > /*- name = x;*/ > /*+*/name->buff = x; > else > /*- return NULL;*/ > /*+*/name->size >>= 1; > return name; > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
