From b84b723320c9e55ee26a52566cbe3a92fdf41eca Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Thu, 11 Oct 2018 09:52:23 +0300 Subject: Don't release fields of a callback If submessage array is a callback, there's nothing to release. --- tests/mem_release/mem_release.c | 13 +++++++++++++ tests/mem_release/mem_release.proto | 6 ++++++ 2 files changed, 19 insertions(+) (limited to 'tests') 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; +} -- cgit v1.2.3