You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by tn...@apache.org on 2002/02/05 14:11:06 UTC
cvs commit: xml-xerces/c/src/xercesc/util RefVectorOf.c RefVectorOf.hpp
tng 02/02/05 05:11:06
Modified: c/src/xercesc/util RefVectorOf.c RefVectorOf.hpp
Log:
[Bug 6114] Memory leaks on iDOM getElementsByTagName().
Revision Changes Path
1.2 +49 -14 xml-xerces/c/src/xercesc/util/RefVectorOf.c
Index: RefVectorOf.c
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/RefVectorOf.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RefVectorOf.c 1 Feb 2002 22:22:12 -0000 1.1
+++ RefVectorOf.c 5 Feb 2002 13:11:06 -0000 1.2
@@ -1,37 +1,37 @@
/*
* The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999-2000 The Apache Software Foundation. All rights
+ *
+ * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
+ * notice, this list of conditions and the following disclaimer.
+ *
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
- *
+ *
* 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
+ * if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
- *
+ *
* 4. The names "Xerces" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
- * software without prior written permission. For written
+ * software without prior written permission. For written
* permission, please contact apache\@apache.org.
- *
+ *
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
- *
+ *
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -45,7 +45,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
- *
+ *
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation, and was
* originally based on software copyright (c) 1999, International
@@ -56,8 +56,11 @@
/**
* $Log: RefVectorOf.c,v $
- * Revision 1.1 2002/02/01 22:22:12 peiyongz
- * Initial revision
+ * Revision 1.2 2002/02/05 13:11:06 tng
+ * [Bug 6114] Memory leaks on iDOM getElementsByTagName().
+ *
+ * Revision 1.1.1.1 2002/02/01 22:22:12 peiyongz
+ * sane_include
*
* Revision 1.5 2001/06/25 13:01:49 knoaman
* Add constraint checking on elements in complex types to prevent same
@@ -245,7 +248,7 @@
delete fElemList[fCurCount];
}
-template <class TElem>
+template <class TElem>
bool RefVectorOf<TElem>::containsElement(const TElem* const toCheck) {
for (unsigned int i = 0; i < fCurCount; i++) {
@@ -255,6 +258,38 @@
}
return false;
+}
+
+//
+// cleanup():
+// similar to destructor
+// called to cleanup the memory, in case destructor cannot be called
+//
+template <class TElem> void RefVectorOf<TElem>::cleanup()
+{
+ if (fAdoptedElems)
+ {
+ for (unsigned int index = 0; index < fCurCount; index++)
+ delete fElemList[index];
+ }
+ delete [] fElemList;
+}
+
+//
+// reinitialize():
+// similar to constructor
+// called to re-construct the fElemList from scratch again
+//
+template <class TElem> void RefVectorOf<TElem>::reinitialize()
+{
+ // reinitialize the array
+ if (fElemList)
+ cleanup();
+
+ fElemList = new TElem*[maxElems];
+ for (unsigned int index = 0; index < maxElems; index++)
+ fElemList[index] = 0;
+
}
1.2 +20 -15 xml-xerces/c/src/xercesc/util/RefVectorOf.hpp
Index: RefVectorOf.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/RefVectorOf.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RefVectorOf.hpp 1 Feb 2002 22:22:12 -0000 1.1
+++ RefVectorOf.hpp 5 Feb 2002 13:11:06 -0000 1.2
@@ -1,37 +1,37 @@
/*
* The Apache Software License, Version 1.1
- *
- * Copyright (c) 1999-2000 The Apache Software Foundation. All rights
+ *
+ * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
+ * notice, this list of conditions and the following disclaimer.
+ *
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
- *
+ *
* 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
+ * if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
- *
+ *
* 4. The names "Xerces" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
- * software without prior written permission. For written
+ * software without prior written permission. For written
* permission, please contact apache\@apache.org.
- *
+ *
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
- *
+ *
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
@@ -45,7 +45,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
- *
+ *
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation, and was
* originally based on software copyright (c) 1999, International
@@ -56,8 +56,11 @@
/*
* $Log: RefVectorOf.hpp,v $
- * Revision 1.1 2002/02/01 22:22:12 peiyongz
- * Initial revision
+ * Revision 1.2 2002/02/05 13:11:06 tng
+ * [Bug 6114] Memory leaks on iDOM getElementsByTagName().
+ *
+ * Revision 1.1.1.1 2002/02/01 22:22:12 peiyongz
+ * sane_include
*
* Revision 1.5 2001/06/25 13:01:52 knoaman
* Add constraint checking on elements in complex types to prevent same
@@ -99,7 +102,7 @@
RefVectorOf(const unsigned int maxElems, const bool adoptElems = true);
~RefVectorOf();
-
+
// -----------------------------------------------------------------------
// Element management
// -----------------------------------------------------------------------
@@ -111,6 +114,8 @@
void removeElementAt(const unsigned int removeAt);
void removeLastElement();
bool containsElement(const TElem* const toCheck);
+ void cleanup();
+ void reinitialize();
// -----------------------------------------------------------------------
@@ -165,7 +170,7 @@
void Reset();
-private :
+private :
// -----------------------------------------------------------------------
// Data Members
//
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org