vici: Return default value for get_int() if message value is empty string

This is the behavior of some strtol() implementations, and it makes sense,
so force it.
This commit is contained in:
Martin Willi
2014-10-14 16:33:10 +02:00
parent 784916e28d
commit bdfbecb3e6
2 changed files with 5 additions and 1 deletions
@@ -347,7 +347,7 @@ START_TEST(test_get_int)
ck_assert_int_eq(m->get_int(m, 2, "section1.key2"), 0x12);
ck_assert_int_eq(m->get_int(m, 2, "section1.section2.key3"), -1);
ck_assert_int_eq(m->get_int(m, 2, "section1.key4"), 2);
ck_assert_int_eq(m->get_int(m, 2, "key5"), 0);
ck_assert_int_eq(m->get_int(m, 2, "key5"), 2);
ck_assert_int_eq(m->get_int(m, 2, "nonexistent"), 2);
ck_assert_int_eq(m->get_int(m, 2, "n.o.n.e.x.i.s.t.e.n.t"), 2);
@@ -355,6 +355,10 @@ METHOD(vici_message_t, vget_int, int,
found = find_value(this, &value, fmt, args);
if (found)
{
if (value.len == 0)
{
return def;
}
if (chunk_printable(value, NULL, 0))
{
snprintf(buf, sizeof(buf), "%.*s", (int)value.len, value.ptr);