Author: gstein
Date: Wed Jun 15 23:09:58 2011
New Revision: 1136243
URL: http://svn.apache.org/viewvc?rev=1136243&view=rev
Log:
Have inject_to_parser() avoid raising an error when IGNORE_ERRORS is set.
In particular, avoid a situation where the caller may attempt to use
svn_error_clear(ctx->error) (which would be Bad).
* subversion/libsvn_ra_serf/util.c:
(inject_to_parser): avoid returning an error when IGNORE_ERRORS
(svn_ra_serf__handle_xml_parser): simplify the inject_to_parser() call
since we don't have to investigate IGNORE_ERRORS.
Modified:
subversion/trunk/subversion/libsvn_ra_serf/util.c
Modified: subversion/trunk/subversion/libsvn_ra_serf/util.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_ra_serf/util.c?rev=1136243&r1=1136242&r2=1136243&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/trunk/subversion/libsvn_ra_serf/util.c Wed Jun 15 23:09:58 2011
@@ -1180,12 +1180,12 @@ inject_to_parser(svn_ra_serf__xml_parser
int xml_status;
xml_status = XML_Parse(ctx->xmlp, data, len, 0);
- if (xml_status == XML_STATUS_ERROR)
+ if (xml_status == XML_STATUS_ERROR && !ctx->ignore_errors)
return svn_error_createf(SVN_ERR_RA_DAV_MALFORMED_DATA, NULL,
_("XML parsing failed: (%d %s)"),
sl->code, sl->reason);
- if (ctx->error)
+ if (ctx->error && !ctx->ignore_errors)
return svn_error_return(ctx->error);
return SVN_NO_ERROR;
@@ -1262,14 +1262,12 @@ svn_ra_serf__handle_xml_parser(serf_requ
err = inject_to_parser(ctx, data, len, &sl);
if (err)
{
- if (!ctx->ignore_errors)
- {
- XML_ParserFree(ctx->xmlp);
- add_done_item(ctx);
- return svn_error_return(err);
- }
+ /* Should have no errors if IGNORE_ERRORS is set. */
+ SVN_ERR_ASSERT(!ctx->ignore_errors);
- svn_error_clear(err);
+ XML_ParserFree(ctx->xmlp);
+ add_done_item(ctx);
+ return svn_error_return(err);
}
if (APR_STATUS_IS_EAGAIN(status))