tools/xl: Fix uninitialized variable error.
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 28 Aug 2012 13:46:30 +0000 (14:46 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 28 Aug 2012 13:46:30 +0000 (14:46 +0100)
c/s 25779:4ca40e0559c3 introduced a compilation error for any build
system using -Werror=uninitialized, such as the default CentOS 5.7
version of gcc.

And with good reason, because if the global libxl
default_output_format is neither OUTPUT_FORMAT_SXP nor
OUTPUT_FORMAT_JSON, the variable hand will be used before being
initialised.

The attached patch fixes the warning, and futher fixes the logic to
work correctly when a new OUTPUT_FORMAT is added to xl.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
tools/libxl/xl_cmdimpl.c

index e825897b4331801d09f7cbe42fef0d6b62fea6d5..dfdb5ffc82724a010acbd5780fd8789fa509ea2a 100644 (file)
@@ -2686,7 +2686,7 @@ static void list_domains_details(const libxl_dominfo *info, int nb_domain)
     uint8_t *data;
     int i, len, rc;
 
-    yajl_gen hand;
+    yajl_gen hand = NULL;
     yajl_gen_status s;
     const char *buf;
     libxl_yajl_length yajl_len = 0;
@@ -2714,10 +2714,10 @@ static void list_domains_details(const libxl_dominfo *info, int nb_domain)
         CHK_ERRNO(asprintf(&config_source, "<domid %d data>", info[i].domid));
         libxl_domain_config_init(&d_config);
         parse_config_data(config_source, (char *)data, len, &d_config, NULL);
-        if (default_output_format == OUTPUT_FORMAT_SXP)
-            printf_info_sexp(domid, &d_config);
-        else
+        if (default_output_format == OUTPUT_FORMAT_JSON)
             s = printf_info_one_json(hand, info[i].domid, &d_config);
+        else
+            printf_info_sexp(domid, &d_config);
         libxl_domain_config_dispose(&d_config);
         free(data);
         free(config_source);