diff options
author | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2021-03-22 11:47:35 +0100 |
---|---|---|
committer | Fridrich Štrba <fridrich.strba@bluewin.ch> | 2021-03-22 11:47:35 +0100 |
commit | 528018f253d8e01cd5507eed1b3f852346887a5f (patch) | |
tree | bf3a7a7d99abdf8b7235efdf6295959b3e9813f3 | |
parent | bf3e7f3bbc414d4341cf1420c99293debf1bd894 (diff) |
A possible fix of multi-paragraph text in frame
Change-Id: I8a6a455b2dd57b9aa0d2fa3a0e3298f623f1586d
-rw-r--r-- | src/lib/CDRParser.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/lib/CDRParser.cpp b/src/lib/CDRParser.cpp index ca881fc..36b6aff 100644 --- a/src/lib/CDRParser.cpp +++ b/src/lib/CDRParser.cpp @@ -2631,7 +2631,9 @@ void libcdr::CDRParser::readTxsm16(librevenge::RVNGInputStream *input) { #endif unsigned frameFlag = readU32(input); - input->seek(41, librevenge::RVNG_SEEK_CUR); + input->seek(37, librevenge::RVNG_SEEK_CUR); + + unsigned numFrame = readU32(input); unsigned textId = readU32(input); @@ -2643,6 +2645,17 @@ void libcdr::CDRParser::readTxsm16(librevenge::RVNGInputStream *input) if (m_version < 1700) tlen *= 2; input->seek(tlen, librevenge::RVNG_SEEK_CUR); + if (numFrame > 1) + { + for (unsigned i = 0; i < numFrame-1; i++) + { + input->seek(80, librevenge::RVNG_SEEK_CUR); + tlen = readU32(input); + if (m_version < 1700) + tlen *= 2; + input->seek(tlen, librevenge::RVNG_SEEK_CUR); + } + } } else { |