--- parser3/src/main/pa_xml_exception.C 2012/03/16 09:24:14 1.7 +++ parser3/src/main/pa_xml_exception.C 2013/10/15 22:28:36 1.9 @@ -12,8 +12,9 @@ #include "pa_xml_exception.h" #include "pa_globals.h" #include "pa_common.h" +#include "pa_charset.h" -volatile const char * IDENT_PA_XML_EXCEPTION_C="$Id: pa_xml_exception.C,v 1.7 2012/03/16 09:24:14 moko Exp $" IDENT_PA_XML_EXCEPTION_H; +volatile const char * IDENT_PA_XML_EXCEPTION_C="$Id: pa_xml_exception.C,v 1.9 2013/10/15 22:28:36 moko Exp $" IDENT_PA_XML_EXCEPTION_H; // methods @@ -21,15 +22,33 @@ XmlException::XmlException(const String* ftype="xml"; fproblem_source=aproblem_source; - if(aproblem_comment) { - fcomment=new(PointerFreeGC) char[MAX_STRING]; - va_list args; - va_start(args, aproblem_comment); - vsnprintf(fcomment, MAX_STRING, aproblem_comment, args); - va_end(args); - } else if(const char* xml_generic_errors=xmlGenericErrors()) + fcomment=new(PointerFreeGC) char[MAX_STRING]; + va_list args; + va_start(args, aproblem_comment); + vsnprintf((char *)fcomment, MAX_STRING, aproblem_comment, args); + va_end(args); +} + +XmlException::XmlException(const String* aproblem_source, Request& r){ + ftype="xml"; + fproblem_source=aproblem_source; + + if(const char* xml_generic_errors=xmlGenericErrors()){ + fcomment=pa_strdup(xml_generic_errors); + if(r.charsets.source().isUTF8()) + fcomment=fixUTF8(fcomment); + } else + fcomment="-UNKNOWN ERROR-"; +} + +XmlException::XmlException(){ + ftype="xml"; + fproblem_source=0; + + if(const char* xml_generic_errors=xmlGenericErrors()) fcomment=pa_strdup(xml_generic_errors); else fcomment="-UNKNOWN ERROR-"; } + #endif