[libvirt] [PATCH 1/2] vsh: Simplify bailing out on OOM conditions

Peter Krempa pkrempa at redhat.com
Fri Feb 12 13:17:58 UTC 2016


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




More information about the libvir-list mailing list