From 3d36157949dd1e5220bcb58b89381f59c767f558 Mon Sep 17 00:00:00 2001 From: Andrew Ruder Date: Wed, 16 Dec 2015 08:13:55 -0600 Subject: pb_istream_from_buffer: add const to prototype This commit changes the prototype for pb_istream_from_buffer from: pb_istream_t pb_istream_from_buffer(uint8_t *buf, size_t bufsize); to pb_istream_t pb_istream_from_buffer(const uint8_t *buf, size_t bufsize); This allows pb_istream_from_buffer users to point to const buffers without having to inspect code (to ensure practical const-ness) and then be forced to manually cast away const. In order to not break compatibility with existing programs (by introducing a const/non-const union in the pb_istream_t state) we simply cast away the const in pb_istream_from_buffer and re-apply it when possible in the callbacks. Unfortunately we lose any compiler help in the callbacks to ensure we are treating the buffer as const but manual inspection is easy enough. --- pb_decode.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'pb_decode.h') diff --git a/pb_decode.h b/pb_decode.h index 3d433155..16de3e04 100644 --- a/pb_decode.h +++ b/pb_decode.h @@ -103,7 +103,7 @@ void pb_release(const pb_field_t fields[], void *dest_struct); * Alternatively, you can use a custom stream that reads directly from e.g. * a file or a network socket. */ -pb_istream_t pb_istream_from_buffer(uint8_t *buf, size_t bufsize); +pb_istream_t pb_istream_from_buffer(const uint8_t *buf, size_t bufsize); /* Function to read from a pb_istream_t. You can use this if you need to * read some custom header data, or to read data in field callbacks. -- cgit 1.2.3-korg