diff --git a/include/iprt/cpp/xml.h b/include/iprt/cpp/xml.h
index 40975e86..7639c281 100644
--- a/include/iprt/cpp/xml.h
+++ b/include/iprt/cpp/xml.h
@@ -113,9 +113,9 @@ public:
 class RT_DECL_CLASS XmlError : public RuntimeError
 {
 public:
-    XmlError(xmlErrorPtr aErr);
+    XmlError(const xmlError *aErr);
 
-    static char* Format(xmlErrorPtr aErr);
+    static char* Format(const xmlError *aErr);
 };
 
 // Logical errors
diff --git a/src/VBox/Runtime/r3/xml.cpp b/src/VBox/Runtime/r3/xml.cpp
index a6661760..b301a6c6 100644
--- a/src/VBox/Runtime/r3/xml.cpp
+++ b/src/VBox/Runtime/r3/xml.cpp
@@ -131,7 +131,7 @@ LogicError::LogicError(RT_SRC_POS_DECL)
     RTStrFree(msg);
 }
 
-XmlError::XmlError(xmlErrorPtr aErr)
+XmlError::XmlError(const xmlError *aErr)
 {
     if (!aErr)
         throw EInvalidArg(RT_SRC_POS);
@@ -145,7 +145,7 @@ XmlError::XmlError(xmlErrorPtr aErr)
  * Composes a single message for the given error. The caller must free the
  * returned string using RTStrFree() when no more necessary.
  */
-/* static */ char *XmlError::Format(xmlErrorPtr aErr)
+/* static */ char *XmlError::Format(const xmlError *aErr)
 {
     const char *msg = aErr->message ? aErr->message : "<none>";
     size_t msgLen = strlen(msg);
@@ -1856,7 +1856,7 @@ static void xmlParserBaseGenericError(void *pCtx, const char *pszMsg, ...) RT_NO
     va_end(args);
 }
 
-static void xmlParserBaseStructuredError(void *pCtx, xmlErrorPtr error) RT_NOTHROW_DEF
+static void xmlParserBaseStructuredError(void *pCtx, const xmlError *error) RT_NOTHROW_DEF
 {
     NOREF(pCtx);
     /* we expect that there is always a trailing NL */
