summaryrefslogtreecommitdiff
path: root/storage/connect/domdoc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/connect/domdoc.cpp')
-rw-r--r--storage/connect/domdoc.cpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/storage/connect/domdoc.cpp b/storage/connect/domdoc.cpp
index 251b4f17982..518c806c653 100644
--- a/storage/connect/domdoc.cpp
+++ b/storage/connect/domdoc.cpp
@@ -416,18 +416,24 @@ PXLIST DOMNODE::SelectNodes(PGLOBAL g, char *xp, PXLIST lp)
/******************************************************************/
PXNODE DOMNODE::SelectSingleNode(PGLOBAL g, char *xp, PXNODE np)
{
- MSXML2::IXMLDOMNodePtr dnp = Nodep->selectSingleNode(xp);
+ try {
+ MSXML2::IXMLDOMNodePtr dnp = Nodep->selectSingleNode(xp);
- if (dnp) {
- if (np) {
- ((PDOMNODE)np)->Nodep = dnp;
- return np;
- } else
- return new(g) DOMNODE(Doc, dnp);
+ if (dnp) {
+ if (np) {
+ ((PDOMNODE)np)->Nodep = dnp;
+ return np;
+ } else
+ return new(g) DOMNODE(Doc, dnp);
- } else
- return NULL;
+ } // endif dnp
+
+ } catch(_com_error e) {
+ sprintf(g->Message, "%s: %s", MSG(COM_ERROR),
+ _com_util::ConvertBSTRToString(e.Description()));
+ } catch(...) {}
+ return NULL;
} // end of SelectSingleNode
/******************************************************************/