On Thu, Jan 18, 2007 at 07:18:51PM -0800, William M. Brack wrote:
> Mike Mueller wrote:
> > I'm using a memory text writer as in the function testXmlwriterMemory()
> > here:  http://www.xmlsoft.org/examples/testWriter.c
> >
> > I create a buffer, a writer, start a document, write some elements, end
> > the document.  Every one of the write calls returns 0 (no bytes written,
> > but no errors either).
> >
> > Examining the buffer in GDB shows it empty:
> >
> >    $10 = {
> >       content = 0x3d6380 "",
> >       use = 0,
> >       size = 4096,
> >       alloc = XML_BUFFER_ALLOC_EXACT
> >    }
> >
> > Examining the writer's out->context field, it's a void pointer with the
> > same address as the buffer I handed it when the writer was created.
> >
> > Examining the writer's out->buffer field shows it contains all the data
> > I wrote!
> >
> >    $14 = {
> >       content = 0x3d73f8 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>...",
> >       use = 192,
> >       size = 4096,
> >       alloc = XML_BUFFER_ALLOC_DOUBLEIT
> >    }
> >
> > I truncated the content field because it was large, but it had my
> > complete XML document inside it.  So the writer is apparently doing most
> > of its job, except it won't put any data into my buffer.
> >
> > Anyone know why this would happen?
> >
> > --
> > Mike Mueller
> > [EMAIL PROTECTED]
> 
> If you compile and run the test program you reference, does it work OK 
> (it certainly does for me)?  Assuming that it does, then what are the
> differences between your code and the function in the test program?  What
> does gdb show for the test program buffer?  When you say "Every one of
> the write calls returns 0" are you describing the return code from a
> fuction like xmlTextWriterStartElement?  If so, 0 means success, and a
> negative value means error.
> 
> Bill

Thanks, I guess that should have been my next step.

I compiled the test program and it works fine.  It turns out the data
gets dumped into the buffer when you call xmlFreeTextWriter.  I wasn't
freeing the writer until much after I tried to find my data in the
buffer.  Of course, the documentation for this function simply says:

    Deallocate all the resources associated to the writer

Yay for confusing APIs.

Mike

-- 
Mike Mueller
[EMAIL PROTECTED]
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to