summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFridrich Štrba <fridrich.strba@bluewin.ch>2021-03-22 11:47:35 +0100
committerFridrich Štrba <fridrich.strba@bluewin.ch>2021-03-22 11:47:35 +0100
commit528018f253d8e01cd5507eed1b3f852346887a5f (patch)
treebf3a7a7d99abdf8b7235efdf6295959b3e9813f3
parentbf3e7f3bbc414d4341cf1420c99293debf1bd894 (diff)
A possible fix of multi-paragraph text in frame
Change-Id: I8a6a455b2dd57b9aa0d2fa3a0e3298f623f1586d
-rw-r--r--src/lib/CDRParser.cpp15
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
{