Guarding against memory allocation error and a resulting null pointer.

Also, now AddRef'ing XPCOM nsPropertyElements when created.
This commit is contained in:
sgehani%netscape.com 1999-07-01 18:39:46 +00:00
Родитель 49fce751a4
Коммит da4d19426e
1 изменённых файлов: 7 добавлений и 2 удалений

Просмотреть файл

@ -362,8 +362,11 @@ AddElemToArray(PLHashEntry* he, PRIntn i, void* arg)
nsString* keyStr = new nsString((PRUnichar*) he->key); nsString* keyStr = new nsString((PRUnichar*) he->key);
nsString* valueStr = new nsString((PRUnichar*) he->value); nsString* valueStr = new nsString((PRUnichar*) he->value);
// XXX Fix to make XPCOM friendly?
nsPropertyElement *element = new nsPropertyElement(); nsPropertyElement *element = new nsPropertyElement();
if (!element)
return HT_ENUMERATE_STOP;
NS_ADDREF(element);
element->SetKey(keyStr); element->SetKey(keyStr);
element->SetValue(valueStr); element->SetValue(valueStr);
propArray->InsertElementAt(element, i); propArray->InsertElementAt(element, i);
@ -383,7 +386,9 @@ nsPersistentProperties::EnumerateProperties(nsIBidirectionalEnumerator** aResult
return rv; return rv;
// Step through hash entries populating a transient array // Step through hash entries populating a transient array
PL_HashTableEnumerateEntries(mTable, AddElemToArray, (void *)propArray); PRIntn n = PL_HashTableEnumerateEntries(mTable, AddElemToArray, (void *)propArray);
if ( n < (PRIntn) mTable->nentries )
return NS_ERROR_OUT_OF_MEMORY;
// Convert array into enumerator // Convert array into enumerator
rv = NS_NewISupportsArrayEnumerator(propArray, aResult); rv = NS_NewISupportsArrayEnumerator(propArray, aResult);