No, that doesn't make sense.
I need to see the exact code, from the point where the CodedOutputStream is
constructed until it is destroyed.

On Mon, Jun 29, 2009 at 5:35 PM, Kenton Varda <ken...@google.com> wrote:

> Odd.  By any chance, does this only happen when writing a zero-length
> message?
>
>
> On Mon, Jun 29, 2009 at 5:22 PM, Alex Black <a...@alexblack.ca> wrote:
>
>>  Error:
>>
>> libprotobuf FATAL ..\src\google\protobuf\io\zero_copy_stream_impl.cc:377]
>> CHECK
>> failed: buffer_used_ == buffer_size_:  BackUp() can only be called after
>> Next().
>>
>> Stack trace:
>>
>>   msvcr90d.dll!_NMSG_WRITE(int rterrnum=10)  Line 198 C
>>   msvcr90d.dll!abort()  Line 68 C
>>   GraphPerf.exe!google::protobuf::internal::LogMessage::Finish()  Line
>> 173 C++
>>   
>> GraphPerf.exe!google::protobuf::internal::LogFinisher::operator=(google::protobuf::internal::LogMessage
>> & other={...})  Line 177 C++
>>   GraphPerf.exe!google::protobuf::io::CopyingOutputStreamAdaptor::BackUp(int
>> count=2202)  Line 378 + 0xa0 bytes C++
>>   GraphPerf.exe!google::protobuf::io::CodedOutputStream::~CodedOutputStream()
>> Line 526 C++
>>   GraphPerf.exe!ProtoBufStreamAdaptor::~ProtoBufStreamAdaptor()  Line 10 +
>> 0x59 bytes C++
>>
>>  ------------------------------
>> *From:* Kenton Varda [mailto:ken...@google.com]
>> *Sent:* Monday, June 29, 2009 7:08 PM
>> *To:* Alex Black
>> *Cc:* Protocol Buffers
>> *Subject:* Re: Using CopyingOutputStreamAdaptor and CodedOutputStream
>>
>>
>>
>> On Sun, Jun 28, 2009 at 7:30 AM, Alex Black <a...@alexblack.ca> wrote:
>>
>>>
>>> Hi, I'm trying to use these to serialize messages to my own stream.
>>>
>>> I have a couple of questions:
>>>
>>> 1. If I use message.SerializeToCodedStream() do I still need to write
>>> the size of the message to the stream on my own first?
>>
>>
>> Yes.
>>
>>
>>> 2. My new code looks like this:
>>>
>>> MyStream myStream; // this implements CopyingOutputStream
>>> CopyingOutputStreamAdaptor protoBufStream(&myStream);
>>> CodedOutputStream codedOutputStream(&protoBufStream);
>>>
>>> Then I write messages like this:
>>>
>>> message.SerializeToCodedStream(&codedOutputStream);
>>>
>>> When the CodedOutputStream's destructor gets called, my program aborts
>>> hard.. Looks like there is still 5192 bytes in its buffer, and I think
>>> I need to call Flush() on it, but there is no flush?
>>
>>
>> What is the error message?  Stack trace?
>>
>>
>>>
>>>
>>> thx
>>>
>>> - Alex
>>>
>>>
>>> >>>
>>>
>>
>

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

Reply via email to