From 018010f05c0d9b4e4a7337f7bb1dd375c531637b Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Fri, 12 Feb 2016 14:00:28 +0100 Subject: [PATCH] vsh: Simplify bailing out on OOM conditions When we hit OOM it doesn't really make sense to format the error message by attempting to allocate it. Introduce a simple helper that prints a static message and terminates the execution. --- tools/vsh.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/vsh.c b/tools/vsh.c index 073347a390..91e3106aba 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -77,6 +77,18 @@ const vshCmdDef *cmdSet; /* Bypass header poison */ #undef strdup + +/* simple handler for oom conditions */ +static void +vshErrorOOM(void) +{ + fflush(stdout); + fputs(_("error: Out of memory\n"), stderr); + fflush(stderr); + exit(EXIT_FAILURE); +} + + double vshPrettyCapacity(unsigned long long val, const char **unit) { @@ -1700,11 +1712,8 @@ vshPrintExtra(vshControl *ctl, const char *format, ...) return; va_start(ap, format); - if (virVasprintf(&str, format, ap) < 0) { - vshError(ctl, "%s", _("Out of memory")); - va_end(ap); - return; - } + if (virVasprintfQuiet(&str, format, ap) < 0) + vshErrorOOM(); va_end(ap); fputs(str, stdout); VIR_FREE(str);