[Mobies-commit] [commit] r3640 - UDM/trunk/src/UdmDom

endre at redhat1.isis.vanderbilt.edu endre at redhat1.isis.vanderbilt.edu
Fri Feb 18 13:59:41 CST 2011


Author: endre
Date: Fri Feb 18 13:59:41 2011
New Revision: 3640

Log:
Allocate/deallocate XMLStrings for DSAppend with Xerces' memory manager.

Xerces 3.0 does not have anymore a XMLPlatformUtils::fgArrayMemoryManager.

Modified:
   UDM/trunk/src/UdmDom/UdmDom.cpp

Modified: UDM/trunk/src/UdmDom/UdmDom.cpp
==============================================================================
--- UDM/trunk/src/UdmDom/UdmDom.cpp	Mon Feb 14 09:59:46 2011	(r3639)
+++ UDM/trunk/src/UdmDom/UdmDom.cpp	Fri Feb 18 13:59:41 2011	(r3640)
@@ -735,13 +735,12 @@
 			return XMLString::patternMatch(where, what);
 		};
 
-		// NOTE: DSAppend use new[], but DSAppendTo uses XMLPlatformUtils::fgMemoryManager->allocate.
-		// This should probably be fixed
 		static XMLCh* DSAppend(const XMLCh *src, const string &data)
 		{
 			ASSERT(src != NULL);
 
-			XMLCh *retval = new XMLCh[ XMLString::stringLen(src) + 1 + data.length() + 1 ];
+			int ret_length = XMLString::stringLen(src) + 1 + data.length() + 1;
+			XMLCh *retval = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate(ret_length * sizeof(XMLCh));
 			XMLString::copyString(retval, src);
 			XMLString::catString(retval, gXML_space);
 
@@ -757,7 +756,8 @@
 		{
 			ASSERT(src != NULL);
 
-			XMLCh *retval = new XMLCh[ XMLString::stringLen(src) + 1 + XMLString::stringLen(data) + 1 ];
+			int ret_length = XMLString::stringLen(src) + 1 + XMLString::stringLen(data) + 1;
+			XMLCh *retval = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate(ret_length * sizeof(XMLCh));
 			XMLString::copyString(retval, src);
 			XMLString::catString(retval, gXML_space);
 			XMLString::catString(retval, data);
@@ -778,9 +778,7 @@
 				new_target = XMLString::replicate(data);
 			else {
 				int new_length = XMLString::stringLen(*target) + XMLString::stringLen(data) + 1;
-				// FIXME: this depends on XMLString::release internals (it and fgArrayMemoryManager use delete[]/new[])
-				new_target = (XMLCh*) XMLPlatformUtils::fgArrayMemoryManager->allocate(new_length * sizeof(XMLCh));
-
+				new_target = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate(new_length * sizeof(XMLCh));
 				XMLString::copyString(new_target, *target);
 				XMLString::catString(new_target, data);
 			}
@@ -907,7 +905,7 @@
 					XMLCh *pa_new = DSAppend(pa, myname_buf);
 					//dom_element.setAttribute(DOMString("desynched_atts"), pa);
 					dom_element->setAttribute(gXML__desynched_atts, pa_new);
-					delete [] pa_new;
+					XMLString::release(&pa_new);
 				}
 			}
 
@@ -1681,9 +1679,9 @@
 					{
 						if(DSFind(chas,ncomp) < 0) 
 						{
-							const XMLCh *chas_new = DSAppend(chas, ncomp_buf);
+							XMLCh *chas_new = DSAppend(chas, ncomp_buf);
 							dom_element->setAttribute(gXML___child_as, chas_new);
-							delete [] chas_new;
+							XMLString::release(&chas_new);
 						}
 					}
 					else dom_element->setAttribute(gXML___child_as, ncomp_buf);
@@ -2256,9 +2254,9 @@
 						peer.dom_element->setAttribute(oname, myid);
 					else 
 					{
-						const XMLCh *pa_new = DSAppend(pa, myid);
+						XMLCh *pa_new = DSAppend(pa, myid);
 						peer.dom_element->setAttribute(oname, pa_new);
-						delete [] pa_new;
+						XMLString::release(&pa_new);
 					}	
 					dep->CopyAttributesFromArchetype();
 
@@ -2654,9 +2652,9 @@
 				}
 				else 
 				{
-					const XMLCh *pa_new = DSAppend(pa, myid);
+					XMLCh *pa_new = DSAppend(pa, myid);
 					peer.dom_element->setAttribute(oname_buf, pa_new);
-					delete [] pa_new;
+					XMLString::release(&pa_new);
 				}
 			}
 


More information about the Mobies-commit mailing list