aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2016-04-28 15:45:30 -0600
committerMarkus Armbruster <armbru@redhat.com>2016-05-12 09:47:55 +0200
commit74f24cb6306d065045d0e2215a7d10533fa59c57 (patch)
tree341b74274658e68eba25ff4d4031659d6f1cb0f3 /tests
parent7337468385f0ad258657b2ce76ac0a7306f9f186 (diff)
downloadqemu-74f24cb6306d065045d0e2215a7d10533fa59c57.zip
qemu-74f24cb6306d065045d0e2215a7d10533fa59c57.tar.gz
qemu-74f24cb6306d065045d0e2215a7d10533fa59c57.tar.bz2
qapi: Fix string input visitor handling of invalid list
As shown in the previous commit, the string input visitor was treating bogus input as an empty list rather than an error. Fix parse_str() to set errp, then the callers to exit early if an error was reported. Meanwhile, fix the testsuite to use the generated qapi_free_int16List() instead of rolling our own, and to validate the fixed behavior, while at the same time documenting one more change that we'd like to make in a later patch (a failed visit_start_list should guarantee a NULL pointer, regardless of what things were on input). Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <1461879932-9020-23-git-send-email-eblake@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/test-string-input-visitor.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/tests/test-string-input-visitor.c b/tests/test-string-input-visitor.c
index 8114908..f99824d 100644
--- a/tests/test-string-input-visitor.c
+++ b/tests/test-string-input-visitor.c
@@ -92,19 +92,17 @@ static void test_visitor_in_intList(TestInputVisitorData *data,
}
g_assert(!tmp);
- tmp = res;
- while (tmp) {
- res = res->next;
- g_free(tmp);
- tmp = res;
- }
+ qapi_free_int16List(res);
visitor_input_teardown(data, unused);
v = visitor_input_test_init(data, "not an int list");
+ /* FIXME: res should be NULL on failure, regardless of starting value */
+ res = NULL;
visit_type_int16List(v, NULL, &res, &err);
- /* FIXME fix the visitor, then error_free_or_abort(&err) here */
+ error_free_or_abort(&err);
+ g_assert(!res);
}
static void test_visitor_in_bool(TestInputVisitorData *data,