[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-2.9 1/2] qapi: Fix string input visitor regr
From: |
Michael Roth |
Subject: |
Re: [Qemu-devel] [PATCH for-2.9 1/2] qapi: Fix string input visitor regression for empty lists |
Date: |
Mon, 20 Mar 2017 16:04:44 -0500 |
User-agent: |
alot/0.3.6 |
Quoting Markus Armbruster (2017-03-20 11:13:43)
> Visiting a list when input is the empty string should result in an
> empty list, not an error. Noticed when commit 3d089ce belatedly added
> tests, but simply accepted as weird then. It's actually a regression:
> broken in commit 74f24cb, v2.7.0. Fix it, and throw in another test
> case for empty string.
>
> Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Michael Roth <address@hidden>
> ---
> qapi/string-input-visitor.c | 4 ++++
> tests/test-string-input-visitor.c | 11 ++++++++---
> 2 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/qapi/string-input-visitor.c b/qapi/string-input-visitor.c
> index 806b01ae..c089491 100644
> --- a/qapi/string-input-visitor.c
> +++ b/qapi/string-input-visitor.c
> @@ -54,6 +54,10 @@ static int parse_str(StringInputVisitor *siv, const char
> *name, Error **errp)
> return 0;
> }
>
> + if (!*str) {
> + return 0;
> + }
> +
> do {
> errno = 0;
> start = strtoll(str, &endptr, 0);
> diff --git a/tests/test-string-input-visitor.c
> b/tests/test-string-input-visitor.c
> index 6db850b..79313a7 100644
> --- a/tests/test-string-input-visitor.c
> +++ b/tests/test-string-input-visitor.c
> @@ -63,6 +63,11 @@ static void test_visitor_in_int(TestInputVisitorData *data,
>
> visit_type_int(v, NULL, &res, &err);
> error_free_or_abort(&err);
> +
> + v = visitor_input_test_init(data, "");
> +
> + visit_type_int(v, NULL, &res, &err);
> + error_free_or_abort(&err);
> }
>
> static void check_ilist(Visitor *v, int64_t *expected, size_t n)
> @@ -140,11 +145,11 @@ static void
> test_visitor_in_intList(TestInputVisitorData *data,
> v = visitor_input_test_init(data, "18446744073709551615");
> check_ulist(v, expect4, ARRAY_SIZE(expect4));
>
> - /* Empty list is invalid (weird) */
> + /* Empty list */
>
> v = visitor_input_test_init(data, "");
> - visit_type_int64List(v, NULL, &res, &err);
> - error_free_or_abort(&err);
> + visit_type_int64List(v, NULL, &res, &error_abort);
> + g_assert(!res);
>
> /* Not a list */
>
> --
> 2.7.4
>