diff --git a/doc/html/ApacheDOMC++BindingL3.html b/doc/html/ApacheDOMC++BindingL3.html
index 9db96d5fa02fd748b555e8d57261a46491eb05ad..72dda713c9e3ea7448e336a714a16157428b3015 100644
--- a/doc/html/ApacheDOMC++BindingL3.html
+++ b/doc/html/ApacheDOMC++BindingL3.html
@@ -4631,7 +4631,7 @@ DOMLSSerializer
 
 <td><font face="Courier New,Courier"><font size=-1>XMLCh*</font></font></td>
 
-<td><font face="Courier New,Courier"><font size=-1>writeToString(const DOMNode* nodeToWrite) = 0;</font></font></td>
+<td><font face="Courier New,Courier"><font size=-1>writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0;</font></font></td>
 </tr>
 
 <tr ALIGN=LEFT VALIGN=TOP>
diff --git a/src/xercesc/dom/DOMLSSerializer.hpp b/src/xercesc/dom/DOMLSSerializer.hpp
index 4b1041038652052372d9e05e0bcd17c649e80099..a763d4e94bcf8abe91e84d19f8fdce3b3e534116 100644
--- a/src/xercesc/dom/DOMLSSerializer.hpp
+++ b/src/xercesc/dom/DOMLSSerializer.hpp
@@ -506,13 +506,16 @@ public:
      * diagnostic purposes.
      *
      * @param nodeToWrite  The node to be written.
+     * @param manager  The memory manager to be used to allocate the result string.
+     *   If NULL is used, the memory manager used to construct the serializer will
+     *   be used.
      * @return  Returns the serialized data, or <code>null</code> in case a
      *   failure occured and the failure wasn't canceled by the error
      *   handler.   The returned string is always in UTF-16.
      *   The encoding information available in DOMLSSerializer is ignored in writeToString().
      * @since DOM Level 3
      */
-    virtual XMLCh*     writeToString(const DOMNode* nodeToWrite) = 0;
+    virtual XMLCh*     writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0;
 
     //@}
 
diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp
index 8e17c728ddaa0baf60dd2b4e5fc10d2d5071ae66..d762084c75c52b55fdd540c0c352f149ef059d93 100644
--- a/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp
+++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp
@@ -561,16 +561,18 @@ bool DOMLSSerializerImpl::writeToURI(const DOMNode* nodeToWrite, const XMLCh* ur
 // We don't throw DOMSTRING_SIZE_ERR since we are no longer
 // using DOMString.
 //
-XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite)
+XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite, MemoryManager* manager /*= NULL*/)
 {
-    MemBufFormatTarget  destination(1023, fMemoryManager);
+    if(manager==NULL)
+        manager = fMemoryManager;
+    MemBufFormatTarget  destination(1023, manager);
     bool retVal;
 
     bool bBOMFlag=getFeature(BYTE_ORDER_MARK_ID);
     setFeature(BYTE_ORDER_MARK_ID, false);
     try
     {
-        DOMLSOutputImpl output(fMemoryManager);
+        DOMLSOutputImpl output(manager);
         output.setByteStream(&destination);
         output.setEncoding(XMLUni::fgUTF16EncodingString);
         retVal = write(nodeToWrite, &output);
@@ -590,7 +592,7 @@ XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite)
     }
 
     setFeature(BYTE_ORDER_MARK_ID, bBOMFlag);
-    return (retVal ? XMLString::replicate((XMLCh*) destination.getRawBuffer(), fMemoryManager) : 0);
+    return (retVal ? XMLString::replicate((XMLCh*) destination.getRawBuffer(), manager) : 0);
 }
 
 //
diff --git a/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp b/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp
index 77c55e245ca71872a16e88bdf5c952f39c2c416a..ed110e2d1d442da1512447fe75e625a1b559bdcb 100644
--- a/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp
+++ b/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp
@@ -72,7 +72,7 @@ public:
     /**
 	  *  The caller is responsible for the release of the returned string
 	  */
-    virtual XMLCh*                  writeToString(const DOMNode* nodeToWrite);
+    virtual XMLCh*                  writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL);
     virtual void                    release();
 
     //@}