aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_decode_callbacks.c
diff options
context:
space:
mode:
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>2013-04-02 19:55:21 +0300
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>2013-04-02 19:55:21 +0300
commit214b0eae8aa011fa8b3e8a3dcc784f8d423aeffb (patch)
tree8cdebc1ab067bca01d47eefcc9dcf43ce50048db /tests/test_decode_callbacks.c
parent6f3740f74ed48daf51908676b203f1889455c17d (diff)
Change the callback function to use void**.
NOTE: This change breaks backwards-compatibility by default. If you have old callback functions, you can define PB_OLD_CALLBACK_STYLE to retain the old behaviour. If you want to convert your old callbacks to new signature, you need to do the following: 1) Change decode callback argument to void **arg and encode callback argument to void * const *arg. 2) Change any reference to arg into *arg. The rationale for making the new behaviour the default is that it simplifies the common case of "allocate some memory in decode callback". Update issue 69 Status: FixedInGit
Diffstat (limited to 'tests/test_decode_callbacks.c')
-rw-r--r--tests/test_decode_callbacks.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/tests/test_decode_callbacks.c b/tests/test_decode_callbacks.c
index 95824d1a..7ce4ec0b 100644
--- a/tests/test_decode_callbacks.c
+++ b/tests/test_decode_callbacks.c
@@ -6,7 +6,7 @@
#include <pb_decode.h>
#include "callbacks.pb.h"
-bool print_string(pb_istream_t *stream, const pb_field_t *field, void *arg)
+bool print_string(pb_istream_t *stream, const pb_field_t *field, void **arg)
{
uint8_t buffer[1024] = {0};
@@ -20,37 +20,37 @@ bool print_string(pb_istream_t *stream, const pb_field_t *field, void *arg)
/* Print the string, in format comparable with protoc --decode.
* Format comes from the arg defined in main().
*/
- printf((char*)arg, buffer);
+ printf((char*)*arg, buffer);
return true;
}
-bool print_int32(pb_istream_t *stream, const pb_field_t *field, void *arg)
+bool print_int32(pb_istream_t *stream, const pb_field_t *field, void **arg)
{
uint64_t value;
if (!pb_decode_varint(stream, &value))
return false;
- printf((char*)arg, (long)value);
+ printf((char*)*arg, (long)value);
return true;
}
-bool print_fixed32(pb_istream_t *stream, const pb_field_t *field, void *arg)
+bool print_fixed32(pb_istream_t *stream, const pb_field_t *field, void **arg)
{
uint32_t value;
if (!pb_decode_fixed32(stream, &value))
return false;
- printf((char*)arg, (long)value);
+ printf((char*)*arg, (long)value);
return true;
}
-bool print_fixed64(pb_istream_t *stream, const pb_field_t *field, void *arg)
+bool print_fixed64(pb_istream_t *stream, const pb_field_t *field, void **arg)
{
uint64_t value;
if (!pb_decode_fixed64(stream, &value))
return false;
- printf((char*)arg, (long long)value);
+ printf((char*)*arg, (long long)value);
return true;
}