That's it.  Thanks, Oliver.

  inputStream.open(pbInput, std::ifstream::binary);
did the trick.


On Tuesday, April 16, 2013 11:43:57 AM UTC-4, brsckap wrote:
>
> I get the following error when I declare 3 string fields in a sequence in 
> my protocol buffer input message:
>
> libprotobuf ERROR google/protobuf/message_lite.cc:123] Can't parse message 
> of type "tst.pb.testInput" because it is missing required fields: strThree
>
> Sample message:
> package tst.pb.Test;
> message TestInput {
>     required string strOne = 1;
>     required string strTwo = 2;
>     required string *strThree *= 3;
>     optional sint32 intVar1 = 4 [default = 5];
>     optional sint32 intVar2 = 5 [default = -1];
> }
>
> Any subsequent 'required' fields defined after the 3rd string are missing 
> also.
>
> No error occurs if the sequence of string declarations is 2 followed by a 
> field 
> declaration of a different type and then the 3rd string decl.  For 
> example...
>
> message TestInput {
>     required string strOne = 1;
>     required string strTwo = 2;
>     optional sint32 intVar1 = 3 [default = 5];
>     optional sint32 intVar2 = 4 [default = -1];
>     required string *strThree *= 5;
> }
> ... results in No Error!
>
>
> Changing the 3rd 'required' string in the sequence to optional eliminates 
> the error but the value of the 3rd string becomes the 'default' value, 
> either declared or a default 'null' string, regardless of a value assinged 
> in the input file.
>
> Also, the additional 'optional' fields, trailing the 3-string sequence, 
> are assigned their respective 'default' values, either declared or based on 
> 'type', not values assigned in the input file.
>
> I'm using protobuf-2.4.1 on Windows 7, 64-bit, w/CodeBlocks C++ project.  
> Have not attempted this w/2.5.0 because no mention of any corrections in 
> the release notes and my project right now appears fixed using 2.4.1.
>
> Note:  I'm reading the input message buffer as follows:
>   tst::pb::Test::TestInput input;
>   std::ifstream inputStream;
>   inputStream.open(pbInput);
>   bool rc = input.ParseFromIstream(&inputStream);
>   inputStream.close();
>   if (rc == false)
>   {
>       printf("ERROR! Input ParseFromIstream failed!\n");
>       return;
>   }
>
> Has a problem similar to this  been seen by others?  Or am I missing 
> something?
>
> Thanks for any insight.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to