diff --git a/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp b/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp
index 6c09ad30bea41e4c664748c67febeb8e6b6b885f..40ea0f8f0981e2b578eccded7be654bd2bc94aec 100644
--- a/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp
+++ b/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp
@@ -16,6 +16,9 @@
 
 /*
  * $Log$
+ * Revision 1.6  2004/10/28 20:18:39  peiyongz
+ * store/load fSystemId
+ *
  * Revision 1.5  2004/09/08 13:56:50  peiyongz
  * Apache License Version 2.0
  *
@@ -116,10 +119,18 @@ void XMLDTDDescriptionImpl::serialize(XSerializeEngine& serEng)
 
     if (serEng.isStoring())
     {
+        serEng.writeString(fSystemId);
         serEng.writeString(fRootName);
     }
     else
     {
+        if (fSystemId)
+        {
+            XMLGrammarDescription::getMemoryManager()->deallocate((void*)fSystemId);
+        }
+
+        serEng.readString((XMLCh*&)fSystemId);
+
         //the original root name which came from the ctor needs deallocated
         if (fRootName)
         {