* will eventually have to be passed to free().
*/
char **GetSortedKeys(void) const {
- char **Keys = NULL;
+ char **NewKeys, **Keys = NULL;
int Count = 0;
for (int i = 0; i < m_BucketCount; i++) {
- Keys = (char **)realloc(Keys, (Count + m_Buckets[i].Count) * sizeof(char *));
+ NewKeys = (char **)realloc(Keys, (Count + m_Buckets[i].Count) * sizeof(char *));
+
+ if (Count + m_Buckets[i].Count > 0 && NewKeys == NULL) {
+ free(Keys);
- if (Count + m_Buckets[i].Count > 0 && Keys == NULL) {
return NULL;
}
+ Keys = NewKeys;
+
for (int a = 0; a < m_Buckets[i].Count; a++) {
Keys[Count + a] = m_Buckets[i].Keys[a];
}