1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 04:20:27 +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;

View File

@@ -294,10 +294,6 @@ wMenuInsertCallback(WMenu *menu, int index, char *text,
tmp = wrealloc(menu->entries,
sizeof(WMenuEntry)*(menu->alloced_entries+5));
if (tmp==NULL) {
wwarning(_("wrealloc() failed while trying to add menu item"));
return NULL;
}
menu->entries = tmp;
menu->alloced_entries += 5;

View File

@@ -373,7 +373,7 @@ get_data(FILE *f)
{
COMPLAIN("the data datatype is not still implemented");
COMPLAIN("the data datatype is not yet implemented");
return NULL;
}