* cygmalloc.h (__set_ENOMEM): Declare.
(MALLOC_FAILURE_ACTION): Call __set_ENOMEM. * malloc_wrapper.cc (malloc) Remove setting errno here. (realloc): Ditto. (calloc): Ditto. (memalign): Ditto. (valloc): Ditto. (posix_memalign): Save and restore errno.
This commit is contained in:
@ -70,8 +70,6 @@ malloc (size_t size)
|
||||
__malloc_unlock ();
|
||||
}
|
||||
malloc_printf ("(%d) = %x, called by %p", size, res, __builtin_return_address (0));
|
||||
if (!res)
|
||||
set_errno (ENOMEM);
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -88,8 +86,6 @@ realloc (void *p, size_t size)
|
||||
__malloc_unlock ();
|
||||
}
|
||||
malloc_printf ("(%x, %d) = %x, called by %x", p, size, res, __builtin_return_address (0));
|
||||
if (!res)
|
||||
set_errno (ENOMEM);
|
||||
return res;
|
||||
}
|
||||
|
||||
@ -106,14 +102,14 @@ calloc (size_t nmemb, size_t size)
|
||||
__malloc_unlock ();
|
||||
}
|
||||
malloc_printf ("(%d, %d) = %x, called by %x", nmemb, size, res, __builtin_return_address (0));
|
||||
if (!res)
|
||||
set_errno (ENOMEM);
|
||||
return res;
|
||||
}
|
||||
|
||||
extern "C" int
|
||||
posix_memalign (void **memptr, size_t alignment, size_t bytes)
|
||||
{
|
||||
save_errno save;
|
||||
|
||||
void *res;
|
||||
if (!use_internal_malloc)
|
||||
return ENOSYS;
|
||||
@ -143,8 +139,6 @@ memalign (size_t alignment, size_t bytes)
|
||||
__malloc_lock ();
|
||||
res = dlmemalign (alignment, bytes);
|
||||
__malloc_unlock ();
|
||||
if (!res)
|
||||
set_errno (ENOMEM);
|
||||
}
|
||||
|
||||
return res;
|
||||
@ -164,8 +158,6 @@ valloc (size_t bytes)
|
||||
__malloc_lock ();
|
||||
res = dlvalloc (bytes);
|
||||
__malloc_unlock ();
|
||||
if (!res)
|
||||
set_errno (ENOMEM);
|
||||
}
|
||||
|
||||
return res;
|
||||
@ -299,3 +291,9 @@ malloc_init ()
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
extern "C" void
|
||||
__set_ENOMEM ()
|
||||
{
|
||||
set_errno (ENOMEM);
|
||||
}
|
||||
|
Reference in New Issue
Block a user