diff --git a/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp b/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp index ce609e8163165d4ee5b849bc0799e47db5db7878..b4f951ce519532a6d0c11c8e2b5b7d8737fc0061 100644 --- a/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp +++ b/src/xercesc/util/Platforms/Win32/Win32PlatformUtils.cpp @@ -31,6 +31,7 @@ #include <xercesc/util/XMLUniDefs.hpp> #include <xercesc/util/XMLUni.hpp> #include <xercesc/util/PanicHandler.hpp> +#include <xercesc/util/OutOfMemoryException.hpp> #include <windows.h> #include <stdio.h> @@ -769,15 +770,29 @@ XMLNetAccessor* XMLPlatformUtils::makeNetAccessor() // XMLMsgLoader* XMLPlatformUtils::loadAMsgSet(const XMLCh* const msgDomain) { + XMLMsgLoader* retVal; + try + { #if defined (XML_USE_INMEM_MESSAGELOADER) - return new (fgMemoryManager) InMemMsgLoader(msgDomain); + retVal = new (fgMemoryManager) InMemMsgLoader(msgDomain); #elif defined (XML_USE_WIN32_MSGLOADER) - return new (fgMemoryManager) Win32MsgLoader(msgDomain); + retVal = new (fgMemoryManager) Win32MsgLoader(msgDomain); #elif defined (XML_USE_ICU_MESSAGELOADER) - return new (fgMemoryManager) ICUMsgLoader(msgDomain); + retVal = new (fgMemoryManager) ICUMsgLoader(msgDomain); #else - #error You must provide a message loader + #error You must provide a message loader + return 0; #endif + } + catch(const OutOfMemoryException&) + { + throw; + } + catch(...) + { + panic(PanicHandler::Panic_CantLoadMsgDomain); + } + return retVal; }