1
0
mirror of https://github.com/moparisthebest/wget synced 2024-07-03 16:38:41 -04:00

aprintf is calling memfatal function now instead of calling abort function

for consistency with xmalloc/xrealloc
This commit is contained in:
Alexander Dergachev 2008-04-09 22:27:58 +04:00
parent 31ad1acbc1
commit 79bd3057b1
3 changed files with 26 additions and 5 deletions

View File

@ -171,7 +171,7 @@ aprintf (const char *fmt, ...)
ret = vasprintf (&str, fmt, args);
va_end (args);
if (ret < 0 && errno == ENOMEM)
abort (); /* for consistency with xmalloc/xrealloc */
memfatal ("aprintf", UNKNOWN_ATTEMPTED_SIZE); /* for consistency with xmalloc/xrealloc */
else if (ret < 0)
return NULL;
return str;

View File

@ -53,15 +53,29 @@ as that of the covered work. */
/* Croak the fatal memory error and bail out with non-zero exit
status. */
static void
void
memfatal (const char *context, long attempted_size)
{
/* Make sure we don't try to store part of the log line, and thus
call malloc. */
log_set_save_context (false);
logprintf (LOG_ALWAYS,
_("%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"),
exec_name, context, attempted_size);
/* We have different log outputs in different situations:
1) output without bytes information
2) output with bytes information */
if (attempted_size == UNKNOWN_ATTEMPTED_SIZE)
{
logprintf (LOG_ALWAYS,
_("%s: %s: Failed to allocate enough memory; memory exhausted.\n"),
exec_name, context);
}
else
{
logprintf (LOG_ALWAYS,
_("%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"),
exec_name, context, attempted_size);
}
exit (1);
}

View File

@ -31,6 +31,13 @@ as that of the covered work. */
#ifndef XMALLOC_H
#define XMALLOC_H
/* Croak the fatal memory error and bail out with non-zero exit
status. */
void memfatal (const char *context, long attempted_size);
/* Constant is using when we don`t know attempted size exactly */
#define UNKNOWN_ATTEMPTED_SIZE -3
/* Define this to use Wget's builtin malloc debugging, which is crude
but occasionally useful. It will make Wget a lot slower and
larger, and susceptible to aborting if malloc_table overflows, so