
On Mon, Jan 21, 2019 at 15:13:21 +0000, Richard W.M. Jones wrote:
GCC 9 gives pages of errors like:
qemumonitorjsontest.c: In function 'mymain': qemumonitorjsontest.c:2904:9: error: jump skips variable initialization [-Werror=jump-misses-init] 2904 | goto cleanup; | ^~~~ qemumonitorjsontest.c:3111:2: note: label 'cleanup' defined here 3111 | cleanup: | ^~~~~~~ qemumonitorjsontest.c:2920:54: note: '({anonymous})' declared here 2920 | simpleFunc = (testQemuMonitorJSONSimpleFuncData) {.xmlopt = driver.xmlopt, \ | ^ qemumonitorjsontest.c:3008:5: note: in expansion of macro 'DO_TEST_GEN' 3008 | DO_TEST_GEN(qemuMonitorJSONBlockdevMediumInsert); | ^~~~~~~~~~~
By moving the cleanup section up near the top of the function we can avoid this. I think a better way might be to disable the warning. --- tests/qemumonitorjsontest.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c index 1a8a31717f..299c5f0cbe 100644 --- a/tests/qemumonitorjsontest.c +++ b/tests/qemumonitorjsontest.c @@ -2900,8 +2900,12 @@ mymain(void)
if (!(qapiData.schema = testQEMUSchemaLoad())) { VIR_TEST_VERBOSE("failed to load qapi schema\n"); - ret = -1; - goto cleanup; + cleanup: + VIR_FREE(metaschemastr); + virJSONValueFree(metaschema); + virHashFree(qapiData.schema); + qemuTestDriverFree(&driver); + return -1; }
#define DO_TEST(name) \ @@ -3098,7 +3102,6 @@ mymain(void) if (!(metaschema = testQEMUSchemaGetLatest()) || !(metaschemastr = virJSONValueToString(metaschema, false))) { VIR_TEST_VERBOSE("failed to load latest qapi schema\n"); - ret = -1; goto cleanup;
We generally avoid jumps back. Also cleanup really should be at the end. Wouldn't be enough just to memset the few structs at the beginning?