r=timeless, sr=brendan
Avoid potential malloc of 0
This commit is contained in:
mkaply%us.ibm.com 2001-06-26 21:14:12 +00:00
Родитель cbc6916a7c
Коммит 295dee9138
1 изменённых файлов: 18 добавлений и 14 удалений

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

@ -517,23 +517,27 @@ NS_IMETHODIMP nsPrefBranch::GetChildList(const char *aStartingAt, PRUint32 *aCou
// all the matching elements
numPrefs = prefArray.Count();
outArray = (char **)nsMemory::Alloc(numPrefs * sizeof(char *));
if (!outArray)
return NS_ERROR_OUT_OF_MEMORY;
for (dwIndex = 0; dwIndex < numPrefs; ++dwIndex) {
theElement = (char *)prefArray.ElementAt(dwIndex);
outArray[dwIndex] = (char *)nsMemory::Clone(theElement, strlen(theElement) + 1);
if (!outArray[dwIndex]) {
// we ran out of memory... this is annoying
NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(dwIndex, outArray);
if (numPrefs) {
outArray = (char **)nsMemory::Alloc(numPrefs * sizeof(char *));
if (!outArray)
return NS_ERROR_OUT_OF_MEMORY;
}
}
for (dwIndex = 0; dwIndex < numPrefs; ++dwIndex) {
theElement = (char *)prefArray.ElementAt(dwIndex);
outArray[dwIndex] = (char *)nsMemory::Clone(theElement, strlen(theElement) + 1);
if (!outArray[dwIndex]) {
// we ran out of memory... this is annoying
NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(dwIndex, outArray);
return NS_ERROR_OUT_OF_MEMORY;
}
}
*aChildArray = outArray;
} else {
*aChildArray = nsnull;
} /* endif */
*aCount = numPrefs;
*aChildArray = outArray;
return NS_OK;
}