зеркало из https://github.com/mozilla/pjs.git
Guarding against memory allocation error and a resulting null pointer.
Also, now AddRef'ing XPCOM nsPropertyElements when created.
This commit is contained in:
Родитель
e8c04d9530
Коммит
71384d8fb5
|
@ -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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче