fofi/FoFiTrueType.cc | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-)
New commits: commit 8ce31485faa26994c52f4d032cc5a8355aba23d1 Merge: 4589ce1 303287e Author: Albert Astals Cid <[email protected]> Date: Fri Sep 26 00:40:43 2014 +0200 Merge remote-tracking branch 'origin/poppler-0.26' commit 303287ebdad0de9fb2655c4d7eab627c0045ea04 Author: Thomas Freitag <[email protected]> Date: Fri Sep 26 00:25:38 2014 +0200 Fix rendering of file with a wrong embedded font Bug #84270 diff --git a/fofi/FoFiTrueType.cc b/fofi/FoFiTrueType.cc index cd11d6f..456de90 100644 --- a/fofi/FoFiTrueType.cc +++ b/fofi/FoFiTrueType.cc @@ -20,6 +20,7 @@ // Copyright (C) 2008 Tomas Are Haavet <[email protected]> // Copyright (C) 2012 Suzuki Toshiya <[email protected]> // Copyright (C) 2012 Adrian Johnson <[email protected]> +// Copyright (C) 2014 Thomas Freitag <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -1421,7 +1422,7 @@ void FoFiTrueType::parse() { void FoFiTrueType::readPostTable() { GooString *name; - int tablePos, postFmt, stringIdx, stringPos; + int tablePos, postFmt, stringIdx, stringPos, savedStringIdx; GBool ok; int i, j, n, m; @@ -1456,6 +1457,7 @@ void FoFiTrueType::readPostTable() { nameToGID->removeInt(macGlyphNames[j]); nameToGID->add(new GooString(macGlyphNames[j]), i); } else { + savedStringIdx = stringIdx; j -= 258; if (j != stringIdx) { for (stringIdx = 0, stringPos = tablePos + 34 + 2*n; @@ -1467,13 +1469,17 @@ void FoFiTrueType::readPostTable() { } m = getU8(stringPos, &ok); if (!ok || !checkRegion(stringPos + 1, m)) { - goto err; - } - name = new GooString((char *)&file[stringPos + 1], m); - nameToGID->removeInt(name); - nameToGID->add(name, i); - ++stringIdx; - stringPos += 1 + m; + stringIdx = savedStringIdx; + ok = gTrue; + nameToGID->removeInt(macGlyphNames[j]); + nameToGID->add(new GooString(macGlyphNames[0]), i); + } else { + name = new GooString((char *)&file[stringPos + 1], m); + nameToGID->removeInt(name); + nameToGID->add(name, i); + ++stringIdx; + stringPos += 1 + m; + } } } } else if (postFmt == 0x00028000) { commit f94ba85a736b4c90c05e7782939f32506472658e Author: Carlos Garcia Campos <[email protected]> Date: Fri Sep 12 19:22:20 2014 +0200 glib: Fix use of uninitialized members in PopplerInputStream https://bugs.freedesktop.org/show_bug.cgi?id=82630 diff --git a/glib/poppler-input-stream.cc b/glib/poppler-input-stream.cc index 041cc2e..e57e344 100644 --- a/glib/poppler-input-stream.cc +++ b/glib/poppler-input-stream.cc @@ -31,6 +31,8 @@ PopplerInputStream::PopplerInputStream(GInputStream *inputStreamA, GCancellable length = lengthA; bufPtr = bufEnd = buf; bufPos = start; + savePos = 0; + saved = gFalse; } PopplerInputStream::~PopplerInputStream() @@ -77,6 +79,7 @@ void PopplerInputStream::setPos(Goffset pos, int dir) if (dir >= 0) { g_seekable_seek(seekable, pos, G_SEEK_SET, cancellable, NULL); + bufPos = pos; } else { g_seekable_seek(seekable, 0, G_SEEK_END, cancellable, NULL); size = (Guint)g_seekable_tell(seekable); @@ -110,7 +113,7 @@ GBool PopplerInputStream::fillBuf() if (limited && bufPos + inputStreamBufSize > start + length) { n = start + length - bufPos; } else { - n = inputStreamBufSize; + n = inputStreamBufSize - (bufPos % inputStreamBufSize); } n = g_input_stream_read(inputStream, buf, n, cancellable, NULL); _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
