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:
@@ -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.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.section2.key3"), -1);
|
||||||
ck_assert_int_eq(m->get_int(m, 2, "section1.key4"), 2);
|
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, "nonexistent"), 2);
|
||||||
ck_assert_int_eq(m->get_int(m, 2, "n.o.n.e.x.i.s.t.e.n.t"), 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);
|
found = find_value(this, &value, fmt, args);
|
||||||
if (found)
|
if (found)
|
||||||
{
|
{
|
||||||
|
if (value.len == 0)
|
||||||
|
{
|
||||||
|
return def;
|
||||||
|
}
|
||||||
if (chunk_printable(value, NULL, 0))
|
if (chunk_printable(value, NULL, 0))
|
||||||
{
|
{
|
||||||
snprintf(buf, sizeof(buf), "%.*s", (int)value.len, value.ptr);
|
snprintf(buf, sizeof(buf), "%.*s", (int)value.len, value.ptr);
|
||||||
|
|||||||
Reference in New Issue
Block a user