From 050b1f646b7c02d9519a3ff58d4b0f504bdb08e7 Mon Sep 17 00:00:00 2001 From: "peterv%netscape.com" Date: Tue, 3 Apr 2001 12:38:01 +0000 Subject: [PATCH] Fix some of bug #59853 (new operator should be used with more care). Not part of default build. r=Pike. --- extensions/transformiix/source/base/List.cpp | 13 +- .../transformiix/source/base/StringList.cpp | 254 +++++++++--------- .../transformiix/source/net/URIUtils.cpp | 6 +- .../transformiix/source/xml/XMLDOMUtils.cpp | 6 +- .../xml/dom/standalone/NodeListDefinition.cpp | 2 + 5 files changed, 149 insertions(+), 132 deletions(-) diff --git a/extensions/transformiix/source/base/List.cpp b/extensions/transformiix/source/base/List.cpp index a272aabf1259..c22f84f87710 100644 --- a/extensions/transformiix/source/base/List.cpp +++ b/extensions/transformiix/source/base/List.cpp @@ -23,7 +23,7 @@ * Bob Miller, kbob@oblix.com * -- plugged core leak. * - * $Id: List.cpp,v 1.5 2001/01/12 20:06:08 axel%pike.org Exp $ + * $Id: List.cpp,v 1.6 2001/04/03 12:37:53 peterv%netscape.com Exp $ */ #include "List.h" @@ -38,7 +38,7 @@ /** * Default constructor for a List; * @author Keith Visco - * @version $Revision: 1.5 $ $Date: 2001/01/12 20:06:08 $ + * @version $Revision: 1.6 $ $Date: 2001/04/03 12:37:53 $ **/ List::List() { @@ -92,12 +92,14 @@ void* List::get(int index) { int c = 0; ListItem* item = firstItem; - while (c != index) { + while ((c != index) && item) { item = item->nextItem; ++c; } - return item->objPtr; + if (item) + return item->objPtr; + return 0; } //-- get(int) List::ListItem* List::getFirstItem() { @@ -139,6 +141,9 @@ void List::insertAfter(void* objPtr, ListItem* refItem) { void List::insertBefore(void* objPtr, ListItem* refItem) { ListItem* item = new ListItem; + if (!item) + return; + item->objPtr = objPtr; item->nextItem = 0; item->prevItem = 0; diff --git a/extensions/transformiix/source/base/StringList.cpp b/extensions/transformiix/source/base/StringList.cpp index df17dbdf09e5..11b2668aaf60 100644 --- a/extensions/transformiix/source/base/StringList.cpp +++ b/extensions/transformiix/source/base/StringList.cpp @@ -23,13 +23,13 @@ * Bob Miller, kbob@oblix.com * -- plugged core leak. * - * $Id: StringList.cpp,v 1.5 2001/01/12 20:06:08 axel%pike.org Exp $ + * $Id: StringList.cpp,v 1.6 2001/04/03 12:37:57 peterv%netscape.com Exp $ */ /** * StringList * @author Keith Visco - * @version $Revision: 1.5 $ $Date: 2001/01/12 20:06:08 $ + * @version $Revision: 1.6 $ $Date: 2001/04/03 12:37:57 $ **/ #ifndef MOZ_XSL @@ -41,9 +41,9 @@ * Creates an empty list **/ StringList::StringList() { - firstItem = 0; - lastItem = 0; - itemCount = 0; + firstItem = 0; + lastItem = 0; + itemCount = 0; } //-- StringList; /** @@ -51,26 +51,28 @@ StringList::StringList() { * references, make sure you make copies of any needed Strings */ StringList::~StringList() { - StringListItem* item = firstItem; - while (item) { - StringListItem* tItem = item; - item = item->nextItem; - delete tItem->strptr; - delete tItem; - } + StringListItem* item = firstItem; + while (item) { + StringListItem* tItem = item; + item = item->nextItem; + delete tItem->strptr; + delete tItem; + } } //-- ~StringList void StringList::add(String* strptr) { - StringListItem* sItem = new StringListItem; - sItem->strptr = strptr; - sItem->nextItem = 0; - sItem->prevItem = lastItem; - if (lastItem) lastItem->nextItem = sItem; - lastItem = sItem; - if (!firstItem) firstItem = sItem; + StringListItem* sItem = new StringListItem; + if (sItem) { + sItem->strptr = strptr; + sItem->nextItem = 0; + sItem->prevItem = lastItem; + } + if (lastItem) lastItem->nextItem = sItem; + lastItem = sItem; + if (!firstItem) firstItem = sItem; - // increase the item count - ++itemCount; + // increase the item count + ++itemCount; } //-- add MBool StringList::contains(String& search) { @@ -86,7 +88,7 @@ MBool StringList::contains(String& search) { * Returns the number of Strings in this List **/ Int32 StringList::getLength() { - return itemCount; + return itemCount; } //-- getLength @@ -99,28 +101,30 @@ Int32 StringList::getLength() { **/ void StringList::insertAfter(String* strptr, StringListItem* refItem) { - //-- if refItem == null insert at end - if (!refItem) { - if (firstItem) insertBefore(strptr, firstItem); - else add(strptr); - return; - } + //-- if refItem == null insert at end + if (!refItem) { + if (firstItem) insertBefore(strptr, firstItem); + else add(strptr); + return; + } - //-- if inserting at end of list - if (refItem == lastItem) { - add(strptr); - return; - } + //-- if inserting at end of list + if (refItem == lastItem) { + add(strptr); + return; + } - //-- insert into middle of list - StringListItem* sItem = new StringListItem; - sItem->strptr = strptr; - sItem->prevItem = refItem; - sItem->nextItem = refItem->nextItem; - refItem->nextItem = sItem; + //-- insert into middle of list + StringListItem* sItem = new StringListItem; + if (sItem) { + sItem->strptr = strptr; + sItem->prevItem = refItem; + sItem->nextItem = refItem->nextItem; + refItem->nextItem = sItem; - // increase the item count - ++itemCount; + // increase the item count + ++itemCount; + } } //-- insertAfter /** @@ -132,23 +136,25 @@ void StringList::insertAfter(String* strptr, StringListItem* refItem) { **/ void StringList::insertBefore(String* strptr, StringListItem* refItem) { - //-- if refItem == null insert at end - if (!refItem) { - add(strptr); - return; - } + //-- if refItem == null insert at end + if (!refItem) { + add(strptr); + return; + } - StringListItem* sItem = new StringListItem; - sItem->strptr = strptr; - sItem->nextItem = refItem; - sItem->prevItem = refItem->prevItem; - refItem->prevItem = sItem; + StringListItem* sItem = new StringListItem; + if (sItem) { + sItem->strptr = strptr; + sItem->nextItem = refItem; + sItem->prevItem = refItem->prevItem; + refItem->prevItem = sItem; + } - if (refItem == firstItem) firstItem = sItem; - if (itemCount == 0) lastItem = sItem; + if (refItem == firstItem) firstItem = sItem; + if (itemCount == 0) lastItem = sItem; - // increase the item count - ++itemCount; + // increase the item count + ++itemCount; } //-- insertBefore /** @@ -156,32 +162,32 @@ void StringList::insertBefore(String* strptr, StringListItem* refItem) { * will need to be deleted by the caller. **/ StringListIterator* StringList::iterator() { - return new StringListIterator(this); + return new StringListIterator(this); } //-- iterator String* StringList::remove(String* strptr) { - StringListItem* sItem = firstItem; - while (sItem) { - if (sItem->strptr == strptr) { - remove(sItem); - delete sItem; - return strptr; - } - sItem = sItem->nextItem; - } - // not in list - return 0; + StringListItem* sItem = firstItem; + while (sItem) { + if (sItem->strptr == strptr) { + remove(sItem); + delete sItem; + return strptr; + } + sItem = sItem->nextItem; + } + // not in list + return 0; } //-- remove StringList::StringListItem* StringList::remove(StringList::StringListItem* sItem) { - if (sItem->prevItem) { - sItem->prevItem->nextItem = sItem->nextItem; - } - if (sItem == firstItem) firstItem = sItem->nextItem; - if (sItem == lastItem) lastItem = sItem->prevItem; - //-- decrease Item count - --itemCount; - return sItem; + if (sItem->prevItem) { + sItem->prevItem->nextItem = sItem->nextItem; + } + if (sItem == firstItem) firstItem = sItem->nextItem; + if (sItem == lastItem) lastItem = sItem->prevItem; + //-- decrease Item count + --itemCount; + return sItem; } //-- remove /** @@ -189,8 +195,8 @@ StringList::StringListItem* StringList::remove(StringList::StringListItem* sItem * All removed strings will be destroyed **/ void StringList::remove(String& search) { - StringListItem* sItem = firstItem; - while (sItem) { + StringListItem* sItem = firstItem; + while (sItem) { if (sItem->strptr->isEqual(search)) { delete sItem->strptr; StringListItem* temp = remove(sItem); @@ -198,7 +204,7 @@ void StringList::remove(String& search) { delete temp; } else sItem = sItem->nextItem; - } + } } //-- remove //----------------------------------------/ @@ -210,9 +216,9 @@ void StringList::remove(String& search) { * Creates a new StringListIterator for the given StringList **/ StringListIterator::StringListIterator(StringList* list) { - stringList = list; - currentItem = 0; - allowRemove = MB_FALSE; + stringList = list; + currentItem = 0; + allowRemove = MB_FALSE; } //-- StringListIterator StringListIterator::~StringListIterator() { @@ -226,8 +232,8 @@ StringListIterator::~StringListIterator() { **/ void StringListIterator::add(String* strptr) { - stringList->insertAfter(strptr,currentItem); - allowRemove = MB_FALSE; + stringList->insertAfter(strptr,currentItem); + allowRemove = MB_FALSE; } //-- add @@ -235,20 +241,20 @@ void StringListIterator::add(String* strptr) { * Returns true if a sucessful call to the next() method can be made **/ MBool StringListIterator::hasNext() { - if (currentItem) { - return (MBool)(currentItem->nextItem); - } - return (MBool)(stringList->firstItem); + if (currentItem) { + return (MBool)(currentItem->nextItem); + } + return (MBool)(stringList->firstItem); } //-- hasNext /** * Returns true if a successful call to the previous() method can be made **/ MBool StringListIterator::hasPrevious() { - if (currentItem) { - return (MBool)(currentItem->prevItem); - } - return MB_FALSE; + if (currentItem) { + return (MBool)(currentItem->prevItem); + } + return MB_FALSE; } //-- hasPrevious /** @@ -256,19 +262,19 @@ MBool StringListIterator::hasPrevious() { **/ String* StringListIterator::next() { - if (currentItem) { - if (currentItem->nextItem) { - currentItem = currentItem->nextItem; - allowRemove = MB_TRUE; - return currentItem->strptr; - } - } - else { - currentItem = stringList->firstItem; - allowRemove = MB_TRUE; - return currentItem->strptr; - } - return 0; + if (currentItem) { + if (currentItem->nextItem) { + currentItem = currentItem->nextItem; + allowRemove = MB_TRUE; + return currentItem->strptr; + } + } + else { + currentItem = stringList->firstItem; + allowRemove = MB_TRUE; + return currentItem->strptr; + } + return 0; } //-- next /** @@ -276,15 +282,15 @@ String* StringListIterator::next() { **/ String* StringListIterator::previous() { - if (currentItem) { - if (currentItem->prevItem) { - currentItem = currentItem->prevItem; - allowRemove = MB_TRUE; - return currentItem->strptr; - } - } + if (currentItem) { + if (currentItem->prevItem) { + currentItem = currentItem->prevItem; + allowRemove = MB_TRUE; + return currentItem->strptr; + } + } - return 0; + return 0; } //-- prev @@ -294,24 +300,24 @@ String* StringListIterator::previous() { **/ String* StringListIterator::remove() { - if (allowRemove == MB_FALSE) return 0; + if (allowRemove == MB_FALSE) return 0; - allowRemove = MB_FALSE; + allowRemove = MB_FALSE; - StringList::StringListItem* sItem = 0; - if (currentItem) { - // Make previous Item the current Item or null - sItem = currentItem; - if (stringList->firstItem == sItem) currentItem = 0; - stringList->remove(sItem); - return sItem->strptr; - } - return 0; + StringList::StringListItem* sItem = 0; + if (currentItem) { + // Make previous Item the current Item or null + sItem = currentItem; + if (stringList->firstItem == sItem) currentItem = 0; + stringList->remove(sItem); + return sItem->strptr; + } + return 0; } //-- remove /** * Resets the current location within the StringList to the beginning **/ void StringListIterator::reset() { - currentItem = 0; + currentItem = 0; } //-- reset diff --git a/extensions/transformiix/source/net/URIUtils.cpp b/extensions/transformiix/source/net/URIUtils.cpp index d7c9a82d8ec8..514c92f3fee3 100644 --- a/extensions/transformiix/source/net/URIUtils.cpp +++ b/extensions/transformiix/source/net/URIUtils.cpp @@ -29,7 +29,7 @@ * -- 20000326 * -- added Mozilla integration code * - * $Id: URIUtils.cpp,v 1.8 2001/03/06 00:12:40 Peter.VanderBeken%pandora.be Exp $ + * $Id: URIUtils.cpp,v 1.9 2001/04/03 12:37:49 peterv%netscape.com Exp $ */ #include "URIUtils.h" @@ -38,7 +38,7 @@ * URIUtils * A set of utilities for handling URIs * @author Keith Visco - * @version $Revision: 1.8 $ $Date: 2001/03/06 00:12:40 $ + * @version $Revision: 1.9 $ $Date: 2001/04/03 12:37:49 $ **/ #ifndef MOZ_XSL @@ -249,6 +249,8 @@ istream* URIUtils::openStream(ParsedURI* uri) { URIUtils::ParsedURI* URIUtils::parseURI(const String& uri) { ParsedURI* uriTokens = new ParsedURI; + if (!uriTokens) + return NULL; uriTokens->isMalformed = MB_FALSE; short mode = PROTOCOL_MODE; diff --git a/extensions/transformiix/source/xml/XMLDOMUtils.cpp b/extensions/transformiix/source/xml/XMLDOMUtils.cpp index 3ffbed558daa..236cc70b316a 100644 --- a/extensions/transformiix/source/xml/XMLDOMUtils.cpp +++ b/extensions/transformiix/source/xml/XMLDOMUtils.cpp @@ -21,13 +21,13 @@ * Keith Visco * -- original author. * - * $Id: XMLDOMUtils.cpp,v 1.11 2001/01/31 11:48:55 Peter.VanderBeken%pandora.be Exp $ + * $Id: XMLDOMUtils.cpp,v 1.12 2001/04/03 12:37:44 peterv%netscape.com Exp $ */ /** * XMLDOMUtils * @author Keith Visco - * @version $Revision: 1.11 $ $Date: 2001/01/31 11:48:55 $ + * @version $Revision: 1.12 $ $Date: 2001/04/03 12:37:44 $ **/ #include "XMLDOMUtils.h" @@ -61,6 +61,8 @@ Node* XMLDOMUtils::copyNode(Node* node, Document* owner, NamespaceResolver* reso { Document* doc = (Document*)node; Document* newDoc = new Document(); + if (!newDoc) + break; #ifdef MOZ_XSL owner->addWrapper(newDoc); #endif diff --git a/extensions/transformiix/source/xml/dom/standalone/NodeListDefinition.cpp b/extensions/transformiix/source/xml/dom/standalone/NodeListDefinition.cpp index 6ccb5484492c..8eaa8e8ffece 100644 --- a/extensions/transformiix/source/xml/dom/standalone/NodeListDefinition.cpp +++ b/extensions/transformiix/source/xml/dom/standalone/NodeListDefinition.cpp @@ -69,6 +69,8 @@ void NodeListDefinition::append(Node* newNode) void NodeListDefinition::append(Node& newNode) { ListItem* newListItem = new ListItem; + if (!newListItem) + return; // Setup the new list item newListItem->node = &newNode;