# HG changeset patch # Parent 4ca40e0559c33205fb5163b10249a0fd5fda39b9 tools/xl: Fix uninitialized variable error. 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 diff -r 4ca40e0559c3 tools/libxl/xl_cmdimpl.c --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -2686,7 +2686,7 @@ static void list_domains_details(const l 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 l CHK_ERRNO(asprintf(&config_source, "", 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) + 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); - else - s = printf_info_one_json(hand, info[i].domid, &d_config); libxl_domain_config_dispose(&d_config); free(data); free(config_source);