From: Fabian Keil Date: Sun, 4 Mar 2012 11:52:45 +0000 (+0000) Subject: Add strdup_or_die() which will allow to simplify code paths were strdup() failures... X-Git-Tag: v_3_0_20~402 X-Git-Url: http://www.privoxy.org/gitweb/?p=privoxy.git;a=commitdiff_plain;h=903bb2c0cc00cf014f1f01f5198f057c9a8dbf75 Add strdup_or_die() which will allow to simplify code paths were strdup() failures don't need to be handled gracefully --- diff --git a/miscutil.c b/miscutil.c index 1a614c11..619ff5b5 100644 --- a/miscutil.c +++ b/miscutil.c @@ -1,4 +1,4 @@ -const char miscutil_rcs[] = "$Id: miscutil.c,v 1.71 2012/03/04 11:48:54 fabiankeil Exp $"; +const char miscutil_rcs[] = "$Id: miscutil.c,v 1.72 2012/03/04 11:51:25 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/miscutil.c,v $ @@ -93,6 +93,42 @@ void *zalloc(size_t size) } +/********************************************************************* + * + * Function : strdup_or_die + * + * Description : strdup wrapper that either succeeds or causes + * program termination. + * + * Useful in situations were the string length is + * "small" and strdup() failures couldn't be handled + * better anyway. In case of debug builds, failures + * trigger an assert(). + * + * Parameters : + * 1 : str = String to duplicate + * + * Returns : Pointer to newly strdup'd copy of the string. + * + *********************************************************************/ +char *strdup_or_die(const char *str) +{ + char *new_str; + + new_str = strdup(str); + + if (new_str == NULL) + { + assert(new_str != NULL); + log_error(LOG_LEVEL_FATAL, "Out of memory in strdup_or_die()."); + exit(1); + } + + return(new_str); + +} + + #if defined(unix) /********************************************************************* * diff --git a/miscutil.h b/miscutil.h index 4d2b9d39..efb6c23f 100644 --- a/miscutil.h +++ b/miscutil.h @@ -1,6 +1,6 @@ #ifndef MISCUTIL_H_INCLUDED #define MISCUTIL_H_INCLUDED -#define MISCUTIL_H_VERSION "$Id: miscutil.h,v 1.33 2011/05/22 10:30:55 fabiankeil Exp $" +#define MISCUTIL_H_VERSION "$Id: miscutil.h,v 1.34 2011/09/04 11:10:56 fabiankeil Exp $" /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/miscutil.h,v $ @@ -46,6 +46,7 @@ extern "C" { extern const char *basedir; extern void *zalloc(size_t size); +extern char *strdup_or_die(const char *str); #if defined(unix) extern void write_pid_file(void);