libbb: new function bb_die_memory_exhausted
function old new delta bb_die_memory_exhausted - 10 +10 xstrdup 28 23 -5 xsetenv 27 22 -5 xrealloc 32 27 -5 xputenv 22 17 -5 xmalloc 30 25 -5 xfdopen_helper 40 35 -5 xasprintf 44 39 -5 wget_main 2387 2382 -5 open_socket 54 49 -5 glob_brace 419 414 -5 bb_get_chunk_from_file 146 141 -5 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 0/11 up/down: 10/-55) Total: -45 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
e2afae6303
commit
899ae5337a
@ -37,7 +37,7 @@ static const char *const tar_var[] = {
|
|||||||
static void xputenv(char *str)
|
static void xputenv(char *str)
|
||||||
{
|
{
|
||||||
if (putenv(str))
|
if (putenv(str))
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void str2env(char *env[], int idx, const char *str)
|
static void str2env(char *env[], int idx, const char *str)
|
||||||
|
@ -1277,20 +1277,21 @@ extern smallint syslog_level;
|
|||||||
extern smallint logmode;
|
extern smallint logmode;
|
||||||
extern uint8_t xfunc_error_retval;
|
extern uint8_t xfunc_error_retval;
|
||||||
extern void (*die_func)(void);
|
extern void (*die_func)(void);
|
||||||
extern void xfunc_die(void) NORETURN FAST_FUNC;
|
void xfunc_die(void) NORETURN FAST_FUNC;
|
||||||
extern void bb_show_usage(void) NORETURN FAST_FUNC;
|
void bb_show_usage(void) NORETURN FAST_FUNC;
|
||||||
extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
|
void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
|
||||||
extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
|
void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
|
||||||
extern void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
|
void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
|
||||||
extern void bb_simple_perror_msg(const char *s) FAST_FUNC;
|
void bb_simple_perror_msg(const char *s) FAST_FUNC;
|
||||||
extern void bb_perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
|
void bb_perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
|
||||||
extern void bb_simple_perror_msg_and_die(const char *s) NORETURN FAST_FUNC;
|
void bb_simple_perror_msg_and_die(const char *s) NORETURN FAST_FUNC;
|
||||||
extern void bb_herror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
|
void bb_herror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))) FAST_FUNC;
|
||||||
extern void bb_herror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
|
void bb_herror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))) FAST_FUNC;
|
||||||
extern void bb_perror_nomsg_and_die(void) NORETURN FAST_FUNC;
|
void bb_perror_nomsg_and_die(void) NORETURN FAST_FUNC;
|
||||||
extern void bb_perror_nomsg(void) FAST_FUNC;
|
void bb_perror_nomsg(void) FAST_FUNC;
|
||||||
extern void bb_verror_msg(const char *s, va_list p, const char *strerr) FAST_FUNC;
|
void bb_verror_msg(const char *s, va_list p, const char *strerr) FAST_FUNC;
|
||||||
extern void bb_logenv_override(void) FAST_FUNC;
|
void bb_die_memory_exhausted(void) NORETURN FAST_FUNC;
|
||||||
|
void bb_logenv_override(void) FAST_FUNC;
|
||||||
|
|
||||||
/* We need to export XXX_main from libbusybox
|
/* We need to export XXX_main from libbusybox
|
||||||
* only if we build "individual" binaries
|
* only if we build "individual" binaries
|
||||||
|
@ -20,7 +20,7 @@ char* FAST_FUNC bb_get_chunk_from_file(FILE *file, size_t *end)
|
|||||||
/* grow the line buffer as necessary */
|
/* grow the line buffer as necessary */
|
||||||
if (!(idx & 0xff)) {
|
if (!(idx & 0xff)) {
|
||||||
if (idx == ((size_t)-1) - 0xff)
|
if (idx == ((size_t)-1) - 0xff)
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
linebuf = xrealloc(linebuf, idx + 0x100);
|
linebuf = xrealloc(linebuf, idx + 0x100);
|
||||||
}
|
}
|
||||||
linebuf[idx++] = (char) ch;
|
linebuf[idx++] = (char) ch;
|
||||||
|
@ -42,7 +42,7 @@ static FILE* xfdopen_helper(unsigned fd_and_rw_bit)
|
|||||||
{
|
{
|
||||||
FILE* fp = fdopen(fd_and_rw_bit >> 1, fd_and_rw_bit & 1 ? "w" : "r");
|
FILE* fp = fdopen(fd_and_rw_bit >> 1, fd_and_rw_bit & 1 ? "w" : "r");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
return fp;
|
return fp;
|
||||||
}
|
}
|
||||||
FILE* FAST_FUNC xfdopen_for_read(int fd)
|
FILE* FAST_FUNC xfdopen_for_read(int fd)
|
||||||
|
@ -25,6 +25,11 @@
|
|||||||
* fail, so callers never need to check for errors. If it returned, it
|
* fail, so callers never need to check for errors. If it returned, it
|
||||||
* succeeded. */
|
* succeeded. */
|
||||||
|
|
||||||
|
void FAST_FUNC bb_die_memory_exhausted(void)
|
||||||
|
{
|
||||||
|
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef DMALLOC
|
#ifndef DMALLOC
|
||||||
/* dmalloc provides variants of these that do abort() on failure.
|
/* dmalloc provides variants of these that do abort() on failure.
|
||||||
* Since dmalloc's prototypes overwrite the impls here as they are
|
* Since dmalloc's prototypes overwrite the impls here as they are
|
||||||
@ -44,7 +49,7 @@ void* FAST_FUNC xmalloc(size_t size)
|
|||||||
{
|
{
|
||||||
void *ptr = malloc(size);
|
void *ptr = malloc(size);
|
||||||
if (ptr == NULL && size != 0)
|
if (ptr == NULL && size != 0)
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +60,7 @@ void* FAST_FUNC xrealloc(void *ptr, size_t size)
|
|||||||
{
|
{
|
||||||
ptr = realloc(ptr, size);
|
ptr = realloc(ptr, size);
|
||||||
if (ptr == NULL && size != 0)
|
if (ptr == NULL && size != 0)
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
#endif /* DMALLOC */
|
#endif /* DMALLOC */
|
||||||
@ -79,7 +84,7 @@ char* FAST_FUNC xstrdup(const char *s)
|
|||||||
t = strdup(s);
|
t = strdup(s);
|
||||||
|
|
||||||
if (t == NULL)
|
if (t == NULL)
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
|
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
@ -327,14 +332,14 @@ char* FAST_FUNC xasprintf(const char *format, ...)
|
|||||||
va_end(p);
|
va_end(p);
|
||||||
|
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
return string_ptr;
|
return string_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FAST_FUNC xsetenv(const char *key, const char *value)
|
void FAST_FUNC xsetenv(const char *key, const char *value)
|
||||||
{
|
{
|
||||||
if (setenv(key, value, 1))
|
if (setenv(key, value, 1))
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handles "VAR=VAL" strings, even those which are part of environ
|
/* Handles "VAR=VAL" strings, even those which are part of environ
|
||||||
|
@ -409,7 +409,7 @@ static FILE *open_socket(len_and_sockaddr *lsa)
|
|||||||
/* hopefully it understands what ESPIPE means... */
|
/* hopefully it understands what ESPIPE means... */
|
||||||
fp = fdopen(fd, "r+");
|
fp = fdopen(fd, "r+");
|
||||||
if (!fp)
|
if (!fp)
|
||||||
bb_perror_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
|
|
||||||
return fp;
|
return fp;
|
||||||
}
|
}
|
||||||
@ -1114,7 +1114,7 @@ static void download_one_url(const char *url)
|
|||||||
# endif
|
# endif
|
||||||
sfp = fdopen(fd, "r+");
|
sfp = fdopen(fd, "r+");
|
||||||
if (!sfp)
|
if (!sfp)
|
||||||
bb_perror_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
goto socket_opened;
|
goto socket_opened;
|
||||||
}
|
}
|
||||||
sfp = open_socket(lsa);
|
sfp = open_socket(lsa);
|
||||||
|
@ -3158,7 +3158,7 @@ static int glob_brace(char *pattern, o_string *o, int n)
|
|||||||
return o_save_ptr_helper(o, n);
|
return o_save_ptr_helper(o, n);
|
||||||
}
|
}
|
||||||
if (gr == GLOB_NOSPACE)
|
if (gr == GLOB_NOSPACE)
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
/* GLOB_ABORTED? Only happens with GLOB_ERR flag,
|
/* GLOB_ABORTED? Only happens with GLOB_ERR flag,
|
||||||
* but we didn't specify it. Paranoia again. */
|
* but we didn't specify it. Paranoia again. */
|
||||||
bb_error_msg_and_die("glob error %d on '%s'", gr, pattern);
|
bb_error_msg_and_die("glob error %d on '%s'", gr, pattern);
|
||||||
@ -3260,7 +3260,7 @@ static int perform_glob(o_string *o, int n)
|
|||||||
goto literal;
|
goto literal;
|
||||||
}
|
}
|
||||||
if (gr == GLOB_NOSPACE)
|
if (gr == GLOB_NOSPACE)
|
||||||
bb_error_msg_and_die(bb_msg_memory_exhausted);
|
bb_die_memory_exhausted();
|
||||||
/* GLOB_ABORTED? Only happens with GLOB_ERR flag,
|
/* GLOB_ABORTED? Only happens with GLOB_ERR flag,
|
||||||
* but we didn't specify it. Paranoia again. */
|
* but we didn't specify it. Paranoia again. */
|
||||||
bb_error_msg_and_die("glob error %d on '%s'", gr, pattern);
|
bb_error_msg_and_die("glob error %d on '%s'", gr, pattern);
|
||||||
|
Loading…
Reference in New Issue
Block a user