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-10 22:31:33 +04:00
parent 31ad1acbc1
commit dfefb45edf
3 changed files with 26 additions and 5 deletions

View File

@ -171,7 +171,7 @@ aprintf (const char *fmt, ...)
ret = vasprintf (&str, fmt, args); ret = vasprintf (&str, fmt, args);
va_end (args); va_end (args);
if (ret < 0 && errno == ENOMEM) 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) else if (ret < 0)
return NULL; return NULL;
return str; 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 /* Croak the fatal memory error and bail out with non-zero exit
status. */ status. */
static void void
memfatal (const char *context, long attempted_size) memfatal (const char *context, long attempted_size)
{ {
/* Make sure we don't try to store part of the log line, and thus /* Make sure we don't try to store part of the log line, and thus
call malloc. */ call malloc. */
log_set_save_context (false); log_set_save_context (false);
logprintf (LOG_ALWAYS,
_("%s: %s: Failed to allocate %ld bytes; memory exhausted.\n"), /* We have different log outputs in different situations:
exec_name, context, attempted_size); 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); exit (1);
} }

View File

@ -31,6 +31,13 @@ as that of the covered work. */
#ifndef XMALLOC_H #ifndef XMALLOC_H
#define 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 /* Define this to use Wget's builtin malloc debugging, which is crude
but occasionally useful. It will make Wget a lot slower and but occasionally useful. It will make Wget a lot slower and
larger, and susceptible to aborting if malloc_table overflows, so larger, and susceptible to aborting if malloc_table overflows, so