diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2007-02-08 11:35:52 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2007-02-08 11:35:52 +0000 |
commit | 0bce6570f0a3060f0ae83c74b512acd9be0ebad6 (patch) | |
tree | 0fbbb3e4c20a69d53cfc98ae7dbd1ff6110795f0 /winsup/cygwin/malloc_wrapper.cc | |
parent | d4c6243390c1486d3e86d618e218f5360557589c (diff) | |
download | cygnal-0bce6570f0a3060f0ae83c74b512acd9be0ebad6.tar.gz cygnal-0bce6570f0a3060f0ae83c74b512acd9be0ebad6.tar.bz2 cygnal-0bce6570f0a3060f0ae83c74b512acd9be0ebad6.zip |
* 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.
Diffstat (limited to 'winsup/cygwin/malloc_wrapper.cc')
-rw-r--r-- | winsup/cygwin/malloc_wrapper.cc | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/winsup/cygwin/malloc_wrapper.cc b/winsup/cygwin/malloc_wrapper.cc index 086c43d36..dce4a77dc 100644 --- a/winsup/cygwin/malloc_wrapper.cc +++ b/winsup/cygwin/malloc_wrapper.cc @@ -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); +} |