mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
Automated merge.
This commit is contained in:
commit
0a0d73a03f
@ -6,6 +6,18 @@
|
||||
|
||||
* utils.c (fork_to_background): Likewise.
|
||||
|
||||
2008-04-12 Micah Cowan <micah@cowan.name>
|
||||
|
||||
* utils.c (aprintf): Minor formatting changes to Alex's code (80-
|
||||
column limit, concatenated string literals, avoiding nesting
|
||||
levels), and removed invocation of free (since we're aborting
|
||||
anyway).
|
||||
|
||||
2008-04-11 Alexander Dergachev <cy6erbr4in@gmail.com>
|
||||
|
||||
* utils.c (aprintf): Now we are setting limits (1 Mb) for text
|
||||
buffer when we use non-C99 vsnprintf.
|
||||
|
||||
2008-04-11 Micah Cowan <micah@cowan.name>
|
||||
|
||||
* ftp.c (getftp, ftp_loop_internal): Don't append to an existing
|
||||
|
25
src/utils.c
25
src/utils.c
@ -159,6 +159,13 @@ sepstring (const char *s)
|
||||
vsnprintf until the correct size is found. Since Wget also ships a
|
||||
fallback implementation of vsnprintf, this should be portable. */
|
||||
|
||||
/* Constant is using for limits memory allocation for text buffer.
|
||||
Applicable in situation when: vasprintf is not available in the system
|
||||
and vsnprintf return -1 when long line is truncated (in old versions of
|
||||
glibc and in other system where C99 doesn`t support) */
|
||||
|
||||
#define FMT_MAX_LENGTH 1048576
|
||||
|
||||
char *
|
||||
aprintf (const char *fmt, ...)
|
||||
{
|
||||
@ -171,7 +178,8 @@ aprintf (const char *fmt, ...)
|
||||
ret = vasprintf (&str, fmt, args);
|
||||
va_end (args);
|
||||
if (ret < 0 && errno == ENOMEM)
|
||||
memfatal ("aprintf", UNKNOWN_ATTEMPTED_SIZE); /* for consistency with xmalloc/xrealloc */
|
||||
memfatal ("aprintf", UNKNOWN_ATTEMPTED_SIZE); /* for consistency
|
||||
with xmalloc/xrealloc */
|
||||
else if (ret < 0)
|
||||
return NULL;
|
||||
return str;
|
||||
@ -201,8 +209,21 @@ aprintf (const char *fmt, ...)
|
||||
/* Else try again with a larger buffer. */
|
||||
if (n > -1) /* C99 */
|
||||
size = n + 1; /* precisely what is needed */
|
||||
else if (size >= FMT_MAX_LENGTH) /* We have a huge buffer, */
|
||||
{ /* maybe we have some wrong
|
||||
format string? */
|
||||
logprintf (LOG_ALWAYS,
|
||||
_("%s: aprintf: text buffer is too big (%ld bytes), "
|
||||
"aborting.\n"),
|
||||
exec_name, size); /* printout a log message */
|
||||
abort (); /* and abort... */
|
||||
}
|
||||
else
|
||||
size <<= 1; /* twice the old size */
|
||||
{
|
||||
/* else, we continue to grow our
|
||||
* buffer: Twice the old size. */
|
||||
size <<= 1;
|
||||
}
|
||||
str = xrealloc (str, size);
|
||||
}
|
||||
#endif /* not HAVE_VASPRINTF */
|
||||
|
Loading…
Reference in New Issue
Block a user