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 073347a..91e3106 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); -- 2.6.2 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list