59 lines
2.2 KiB
Diff
59 lines
2.2 KiB
Diff
## Fix bug in C++/Parser Expat Support http://scm.codesynthesis.com/?p=xsd/xsd.git;a=commitdiff;h=94cba986108a0e0f42295572ca42c356d59328d7
|
|
### Author Boris Kolpackov <boris@codesynthesis.com>
|
|
## Thu, 24 Jul 2014 11:40:01 +0100 (12:40 +0200)
|
|
### Committer Boris Kolpackov <boris@codesynthesis.com>
|
|
## Thu, 24 Jul 2014 11:40:01 +0100 (12:40 +0200)
|
|
--- xsd/libxsd/xsd/cxx/parser/expat/elements.hxx
|
|
+++ xsd/libxsd/xsd/cxx/parser/expat/elements.hxx
|
|
@@ -51,7 +51,9 @@ namespace xsd
|
|
}
|
|
};
|
|
|
|
- typedef std::unique_ptr<XML_ParserStruct> parser_auto_ptr;
|
|
+ typedef
|
|
+ std::unique_ptr<XML_ParserStruct, parser_deleter>
|
|
+ parser_auto_ptr;
|
|
#else
|
|
// Simple auto pointer for Expat's XML_Parser object.
|
|
//
|
|
--- xsd/libxsd/xsd/cxx/parser/expat/elements.txx
|
|
+++ xsd/libxsd/xsd/cxx/parser/expat/elements.txx
|
|
@@ -283,9 +283,10 @@ namespace xsd
|
|
throw std::bad_alloc ();
|
|
|
|
if (system_id || public_id)
|
|
- parse_begin (parser, system_id ? *system_id : *public_id, eh);
|
|
+ parse_begin (
|
|
+ parser.get (), system_id ? *system_id : *public_id, eh);
|
|
else
|
|
- parse_begin (parser, eh);
|
|
+ parse_begin (parser.get (), eh);
|
|
|
|
// Temporarily unset the exception failbit. Also clear the
|
|
// fail bit when we reset the old state if it was caused
|
|
@@ -310,8 +311,10 @@ namespace xsd
|
|
break;
|
|
}
|
|
|
|
- if (XML_Parse (
|
|
- parser, buf, is.gcount (), is.eof ()) == XML_STATUS_ERROR)
|
|
+ if (XML_Parse (parser.get (),
|
|
+ buf,
|
|
+ is.gcount (),
|
|
+ is.eof ()) == XML_STATUS_ERROR)
|
|
{
|
|
r = false;
|
|
break;
|
|
##http://scm.codesynthesis.com/?p=xsd/xsd.git;a=commitdiff;h=0e5fab0664fb36c6253dfd7bb86d8985d1b349ef
|
|
--- xsd/libxsd/xsd/cxx/parser/expat/elements.txx
|
|
+++ xsd/libxsd/xsd/cxx/parser/expat/elements.txx
|
|
@@ -279,7 +279,7 @@ namespace xsd
|
|
{
|
|
parser_auto_ptr parser (XML_ParserCreateNS (0, XML_Char (' ')));
|
|
|
|
- if (parser == 0)
|
|
+ if (parser.get () == 0)
|
|
throw std::bad_alloc ();
|
|
|
|
if (system_id || public_id)
|
|
|