]> git.saurik.com Git - wxWidgets.git/commitdiff
XML code fixes (patch #815196)
authorVáclav Slavík <vslavik@fastmail.fm>
Tue, 30 Sep 2003 18:36:05 +0000 (18:36 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Tue, 30 Sep 2003 18:36:05 +0000 (18:36 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24012 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/xml/xml.cpp

index 056cc19565a4857fbf193e8c2949873f58bdfdef..ab40593bede751e0241b07634062c65743a82d35 100644 (file)
@@ -543,8 +543,10 @@ bool wxXmlDocument::Load(wxInputStream& stream, const wxString& encoding)
         done = (len < BUFSIZE);
         if (!XML_Parse(parser, buf, len, done))
         {
+            wxString error(XML_ErrorString(XML_GetErrorCode(parser)),
+                           *wxConvCurrent);
             wxLogError(_("XML parsing error: '%s' at line %d"),
-                       XML_ErrorString(XML_GetErrorCode(parser)),
+                       error.c_str(),
                        XML_GetCurrentLineNumber(parser));
             ok = false;
             break;
@@ -553,10 +555,16 @@ bool wxXmlDocument::Load(wxInputStream& stream, const wxString& encoding)
 
     if (ok)
     {
-        SetVersion(ctx.version);
-        SetFileEncoding(ctx.encoding);
+        if (!ctx.version.IsEmpty())
+            SetVersion(ctx.version);
+        if (!ctx.encoding.IsEmpty())
+            SetFileEncoding(ctx.encoding);
         SetRoot(ctx.root);
     }
+    else
+    {
+        delete ctx.root;
+    }
 
     XML_ParserFree(parser);
 #if !wxUSE_UNICODE
@@ -580,13 +588,7 @@ inline static void OutputString(wxOutputStream& stream, const wxString& str,
 {
     if (str.IsEmpty()) return;
 #if wxUSE_UNICODE
-    const wxWX2MBbuf buf(str.mb_str(
-#ifdef __MWERKS__
-    *(convFile ? convFile : &wxConvUTF8)
-#else
-    convFile ? *convFile : wxConvUTF8
-#endif
-    ));
+    const wxWX2MBbuf buf(str.mb_str(*(convFile ? convFile : &wxConvUTF8)));
     stream.Write((const char*)buf, strlen((const char*)buf));
 #else
     if ( convFile == NULL )