common: Use new function to print a failure of xtrymalloc.
authorWerner Koch <wk@gnupg.org>
Mon, 25 Apr 2016 15:26:57 +0000 (17:26 +0200)
committerWerner Koch <wk@gnupg.org>
Mon, 25 Apr 2016 15:26:57 +0000 (17:26 +0200)
* common/miscellaneous.c (xoutofcore): New.
* common/strlist.c (append_to_strlist): Use instead of abort.
(append_to_strlist_try): Use xtrymalloc instead of xmalloc.

Signed-off-by: Werner Koch <wk@gnupg.org>
common/miscellaneous.c
common/strlist.c
common/util.h

index ec36f08..8d9a7aa 100644 (file)
@@ -106,6 +106,17 @@ setup_libgcrypt_logging (void)
 }
 
 
+/* Print an out of core message and let the process die.  The printed
+ * error is taken from ERRNO.  */
+void
+xoutofcore (void)
+{
+  gpg_error_t err = gpg_error_from_syserror ();
+  log_fatal (_("error allocating enough memory: %s\n"), gpg_strerror (err));
+  abort (); /* Never called; just to make the compiler happy.  */
+}
+
+
 /* A wrapper around gcry_cipher_algo_name to return the string
    "AES-128" instead of "AES".  Given that we have an alias in
    libgcrypt for it, it does not harm to too much to return this other
index 319d034..d4f8644 100644 (file)
@@ -128,8 +128,8 @@ append_to_strlist( strlist_t *list, const char *string )
 {
   strlist_t sl;
   sl = append_to_strlist_try (list, string);
-  if (sl == NULL)
-    abort ();
+  if (!sl)
+    xoutofcore ();
   return sl;
 }
 
@@ -140,7 +140,7 @@ append_to_strlist_try (strlist_t *list, const char *string)
 {
     strlist_t r, sl;
 
-    sl = xmalloc( sizeof *sl + strlen(string));
+    sl = xtrymalloc( sizeof *sl + strlen(string));
     if (sl == NULL)
       return NULL;
 
index 466c519..84a15ab 100644 (file)
@@ -263,6 +263,9 @@ const char *gnupg_messages_locale_name (void);
    logging subsystem. */
 void setup_libgcrypt_logging (void);
 
+/* Print an out of core emssage and die.  */
+void xoutofcore (void);
+
 /* Same as estream_asprintf but die on memory failure.  */
 char *xasprintf (const char *fmt, ...) GPGRT_ATTR_PRINTF(1,2);
 /* This is now an alias to estream_asprintf.  */