--- parser3/src/main/pa_xml_exception.C 2011/05/25 03:58:11 1.6 +++ parser3/src/main/pa_xml_exception.C 2026/04/25 13:38:46 1.15 @@ -1,19 +1,20 @@ /** @file Parser: exception class. - Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com) - Author: Alexandr Petrosian (http://paf.design.ru) + Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com) + Authors: Konstantin Morshnev , Alexandr Petrosian */ #include "pa_config_includes.h" #ifdef XML -static const char * const IDENT="$Date: 2011/05/25 03:58:11 $"; - #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.15 2026/04/25 13:38:46 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