summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/miscellaneous.c11
-rw-r--r--common/strlist.c6
-rw-r--r--common/util.h3
3 files changed, 17 insertions, 3 deletions
diff --git a/common/miscellaneous.c b/common/miscellaneous.c
index ec36f08ea..8d9a7aa73 100644
--- a/common/miscellaneous.c
+++ b/common/miscellaneous.c
@@ -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
diff --git a/common/strlist.c b/common/strlist.c
index 319d034e2..d4f864496 100644
--- a/common/strlist.c
+++ b/common/strlist.c
@@ -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;
diff --git a/common/util.h b/common/util.h
index 466c519bd..84a15ab74 100644
--- a/common/util.h
+++ b/common/util.h
@@ -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. */