* 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:
Corinna Vinschen 2007-02-08 11:35:52 +00:00
parent d4c6243390
commit 0bce6570f0
3 changed files with 22 additions and 11 deletions

View File

@ -1,3 +1,15 @@
2007-02-08 Christopher Faylor <me@cgf.cx>
Corinna Vinschen <corinna@vinschen.de>
* 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.
2007-02-07 Corinna Vinschen <corinna@vinschen.de>
* cygmalloc.h (MALLOC_FAILURE_ACTION): Move to correct #if branch.

View File

@ -23,7 +23,8 @@ int dlmallopt (int p, int v) __attribute__ ((regparm (2)));
void dlmalloc_stats ();
#ifndef __INSIDE_CYGWIN__
# define MALLOC_FAILURE_ACTION
extern "C" void __set_ENOMEM ();
# define MALLOC_FAILURE_ACTION __set_ENOMEM ()
# define USE_DL_PREFIX 1
#else
# define __malloc_lock() mallock.acquire ()

View File

@ -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);
}