If you have a message that defined as empty, but attempt to decode a
message that has one or more unknown fields then pb_decode fails. The
method used to count the number of required fields counts 1 required
field because the default type of PB_LAST_FIELD is PB_HTYPE_REQUIRED.
prev_size *= iter->pos->array_size;
}
- if (PB_HTYPE(iter->pos->type) == PB_HTYPE_REQUIRED)
- iter->required_field_index++;
-
if (iter->pos->tag == 0)
return false; /* Only happens with empty message types */
+ if (PB_HTYPE(iter->pos->type) == PB_HTYPE_REQUIRED)
+ iter->required_field_index++;
+
iter->pos++;
iter->field_index++;
if (iter->pos->tag == 0)