Hi,
> There may be other problems, but I cannot send you the whole
> stickynotes_applet file. If you want to send me your patch fixing these,
> I'll be happy to beta test it.
>
> By the way, I guess the problem is around line 297 of
> stickynoteimportnoteaddin.cpp:
>
> std::string noteXml = str(boost::format("<note-content><note-title>%
> 1%</note-title>\n\n"
> "%2%</note-content>") % title % content);
>
> which makes libxml2 reparse already parsed xml.
> If what I just wrote is not plainly stupid, then maybe the cleanest
> solution would be to parse the stickynotes file without considering it
> xml (i.e. as regexps), extract notes bodies and _then_ pass them as
> "content"?
I was strugling with this issue, but it looks like I finally got to the
bottom of this.
Initially it look simple, I simply passed title and content through
gnote::utils::XmlEncoder::encode(), but it didn't help. Apparantly, our
encoder does not encode :)
If I do:
xmlTextWriterWriteString(writer, "a<b&c");
which is what encode() currently does, the string is written to xml as
is!
However, if I do:
xmlTextWriterStartElement(writer, "x");
xmlTextWriterWriteString(writer, "a<b&c");
xmlTextWriterEndElement(writer);
I get a proper XML:
<x>a<b&c</x>
There is at least one more bug from this area:
gnote --new-note='a<b'
This should create a new note named "a<b", but I get a note with empty
content and similar XML parsing errors are printed to console.
I haven't found any note regarding changed xmlTextWriterWriteString in
libxml release notes. Looks like we've lived so long with this bug
present and weren't hit by it until now.
Facinating...
--
Aurimas
Attachment:
signature.asc
Description: This is a digitally signed message part