1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-02-03 06:45:51 +01:00

Fixed wrealloc() to be consistent with the wmalloc() behaviour when it cannot

allocate memory.
This commit is contained in:
dan
1999-12-01 22:25:48 +00:00
parent c914639b8c
commit ef42fce3e6
4 changed files with 29 additions and 21 deletions

View File

@@ -88,10 +88,14 @@ void *wmalloc(size_t size)
if (tmp == NULL) {
wwarning("malloc() failed. Retrying after 2s.");
sleep(2);
tmp = malloc(size);
#ifdef TEST_WITH_GC
tmp = GC_malloc(size);
#else
tmp = malloc(size);
#endif
if (tmp == NULL) {
if (Aborting) {
puts("Real Bad Error: recursive malloc() failure.");
fputs("Really Bad Error: recursive malloc() failure.", stderr);
exit(-1);
} else {
wfatal("virtual memory exhausted");
@@ -109,21 +113,33 @@ void *wrealloc(void *ptr, size_t newsize)
void *nptr;
if (!ptr) {
#ifdef TEST_WITH_GC
nptr = GC_malloc(newsize);
#else
nptr = malloc(newsize);
#endif
nptr = wmalloc(newsize);
} else {
#ifdef TEST_WITH_GC
nptr = GC_realloc(ptr, newsize);
#else
nptr=realloc(ptr, newsize);
nptr = realloc(ptr, newsize);
#endif
}
if (nptr==NULL) {
printf("Could not do realloc");
return NULL;
if (nptr==NULL) {
wwarning("realloc() failed. Retrying after 2s.");
sleep(2);
#ifdef TEST_WITH_GC
nptr = GC_realloc(ptr, newsize);
#else
nptr = realloc(ptr, newsize);
#endif
if (nptr == NULL) {
if (Aborting) {
fputs("Really Bad Error: recursive realloc() failure.",
stderr);
exit(-1);
} else {
wfatal("virtual memory exhausted");
Aborting=1;
wAbort(False);
}
}
}
}
return nptr;
}

View File

@@ -146,10 +146,6 @@ WMInsertItemInTabView(WMTabView *tPtr, int index, WMTabViewItem *item)
items = wrealloc(tPtr->items,
sizeof(WMTabViewItem*) * (tPtr->maxItems + 10));
if (!items) {
wwarning("out of memory allocating memory for tabview");
return;
}
memset(&items[tPtr->maxItems], 0, sizeof(WMTabViewItem*) * 10);
tPtr->items = items;
tPtr->maxItems += 10;