You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by jo...@apache.org on 2014/01/09 00:45:51 UTC

svn commit: r1556676 - /incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp

Author: joseph
Date: Wed Jan  8 23:45:50 2014
New Revision: 1556676

URL: http://svn.apache.org/r1556676
Log:
LOG4CXX-416: crash in domconfigure::configureAndWatch

Modified:
    incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp

Modified: incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp
URL: http://svn.apache.org/viewvc/incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp?rev=1556676&r1=1556675&r2=1556676&view=diff
==============================================================================
--- incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp (original)
+++ incubator/log4cxx/trunk/src/main/cpp/domconfigurator.cpp Wed Jan  8 23:45:50 2014
@@ -723,8 +723,8 @@ void DOMConfigurator::doConfigure(const 
             msg2.append(LOG4CXX_STR("]."));
             LogLog::error(msg2);
         } else {
-            apr_xml_parser *parser;
-            apr_xml_doc *doc;
+            apr_xml_parser *parser = NULL;
+            apr_xml_doc *doc = NULL;
             rv = apr_xml_parse_file(p.getAPRPool(), &parser, &doc, fd, 2000);
             if (rv != APR_SUCCESS) {
                 char errbuf[2000];
@@ -734,10 +734,13 @@ void DOMConfigurator::doConfigure(const 
                 msg2.append(LOG4CXX_STR("], "));
                 apr_strerror(rv, errbuf, sizeof(errbuf));
                 LOG4CXX_DECODE_CHAR(lerrbuf, std::string(errbuf));
-                apr_xml_parser_geterror(parser, errbufXML, sizeof(errbufXML));
-                LOG4CXX_DECODE_CHAR(lerrbufXML, std::string(errbufXML));
                 msg2.append(lerrbuf);
-                msg2.append(lerrbufXML);
+		if(parser)
+                {
+                    apr_xml_parser_geterror(parser, errbufXML, sizeof(errbufXML));
+                    LOG4CXX_DECODE_CHAR(lerrbufXML, std::string(errbufXML));
+                    msg2.append(lerrbufXML);
+                }
                 LogLog::error(msg2);
             } else {
                 AppenderMap appenders;