From: Petteri Aimonen Date: Sun, 12 Feb 2017 08:48:51 +0000 (+0200) Subject: Zero-valued extension fields were mistakenly ignored by encoder. (issue #242) X-Git-Tag: 5.0.2~186^2~31 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=2467922d47a579d447406eddcecdb1127d33213b;p=apps%2Fagl-service-can-low-level.git Zero-valued extension fields were mistakenly ignored by encoder. (issue #242) --- diff --git a/pb.h b/pb.h index f68d1d65..f68a1cc0 100644 --- a/pb.h +++ b/pb.h @@ -478,9 +478,14 @@ struct pb_extension_s { {tag, PB_ATYPE_CALLBACK | PB_HTYPE_REPEATED | ltype, \ fd, 0, pb_membersize(st, m), 0, ptr} -/* Optional extensions don't have the has_ field, as that would be redundant. */ +/* Optional extensions don't have the has_ field, as that would be redundant. + * Furthermore, the combination of OPTIONAL without has_ field is used + * for indicating proto3 style fields. Extensions exist in proto2 mode only, + * so they should be encoded according to proto2 rules. To avoid the conflict, + * extensions are marked as REQUIRED instead. + */ #define PB_OPTEXT_STATIC(tag, st, m, fd, ltype, ptr) \ - {tag, PB_ATYPE_STATIC | PB_HTYPE_OPTIONAL | ltype, \ + {tag, PB_ATYPE_STATIC | PB_HTYPE_REQUIRED | ltype, \ 0, \ 0, \ pb_membersize(st, m), 0, ptr}