diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2018-10-11 09:52:23 +0300 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2018-10-11 09:57:26 +0300 |
commit | b84b723320c9e55ee26a52566cbe3a92fdf41eca (patch) | |
tree | 4e7498dcd6fad80d4d913eeb5246eeaf5a762b78 /tests | |
parent | 7369de399c6b1f7ad31d8f3b56ea34493190b11a (diff) |
Don't release fields of a callback
If submessage array is a callback, there's nothing to release.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/mem_release/mem_release.c | 13 | ||||
-rw-r--r-- | tests/mem_release/mem_release.proto | 6 |
2 files changed, 19 insertions, 0 deletions
diff --git a/tests/mem_release/mem_release.c b/tests/mem_release/mem_release.c index eb62cad..6e06da5 100644 --- a/tests/mem_release/mem_release.c +++ b/tests/mem_release/mem_release.c @@ -177,6 +177,11 @@ static bool test_OneofMessage() return true; } +static bool dummy_decode_cb(pb_istream_t *stream, const pb_field_t *field, void **arg) +{ + return false; +} + /* Garbage input */ static bool test_Garbage() { @@ -195,6 +200,14 @@ static bool test_Garbage() TEST(!pb_decode(&stream, TestMessage_fields, &msg)); } + { + RepeatedMessage msg = RepeatedMessage_init_zero; + pb_istream_t stream = pb_istream_from_buffer(buffer, msgsize); + msg.subs.arg = NULL; + msg.subs.funcs.decode = dummy_decode_cb; + TEST(!pb_decode(&stream, RepeatedMessage_fields, &msg)); + } + return true; } diff --git a/tests/mem_release/mem_release.proto b/tests/mem_release/mem_release.proto index 0816dc2..b0addbd 100644 --- a/tests/mem_release/mem_release.proto +++ b/tests/mem_release/mem_release.proto @@ -33,3 +33,9 @@ message OneofMessage } required int32 last = 4; } + +message RepeatedMessage +{ + required int32 first = 1; + repeated SubMessage subs = 2; +} |