aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKyle Manna <kyle@kylemanna.com>2015-09-21 11:03:12 -0700
committerKyle Manna <kyle@kylemanna.com>2015-09-21 11:03:12 -0700
commite3283e77b825ae9c0c468762fce9b5797b70cba4 (patch)
tree8a8bcb948d8770eef512abfcb2f6f1666874847b
parent6e72df4808aa138f1396ad098ce2d06a6feba882 (diff)
decode: Fix compiler issue with gcc-5
* gcc 5.0 and 5.1 appear to take issue with this line and generates the following error: /home/nitro/tmp/nanopb/pb_decode.c: In function ‘pb_decode_noinit’: /home/nitro/tmp/nanopb/pb_decode.c:889:60: error: conversion to ‘uint8_t {aka unsigned char}’ from ‘int’ may alter its value [-Werror=conversion] fields_seen[iter.required_field_index >> 3] |= (uint8_t)(1 << (iter.required_field_index & 7)); ^ * This seems like a compiler bug, but this workaround is harmless.
-rw-r--r--pb_decode.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/pb_decode.c b/pb_decode.c
index b21bfe37..5cdcbcfb 100644
--- a/pb_decode.c
+++ b/pb_decode.c
@@ -886,7 +886,8 @@ bool checkreturn pb_decode_noinit(pb_istream_t *stream, const pb_field_t fields[
if (PB_HTYPE(iter.pos->type) == PB_HTYPE_REQUIRED
&& iter.required_field_index < PB_MAX_REQUIRED_FIELDS)
{
- fields_seen[iter.required_field_index >> 3] |= (uint8_t)(1 << (iter.required_field_index & 7));
+ uint8_t tmp = (uint8_t)(1 << (iter.required_field_index & 7));
+ fields_seen[iter.required_field_index >> 3] |= tmp;
}
if (!decode_field(stream, wire_type, &iter))