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.
This commit is contained in:
Peter Krempa 2016-02-12 14:00:28 +01:00
parent 9cb8b0e5a4
commit 018010f05c

View File

@ -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);