summaryrefslogtreecommitdiff
path: root/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc')
-rw-r--r--Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc19
1 files changed, 9 insertions, 10 deletions
diff --git a/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc b/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc
index bfdb0eaf80a..7a4d5930ade 100644
--- a/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc
+++ b/Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc
@@ -5,12 +5,13 @@
// This file is licensed under the GPLv2 or later
//
// Copyright 2005 Jeff Muizelaar <jeff@infidigm.net>
-// Copyright 2005-2010, 2012 Albert Astals Cid <aacid@kde.org>
+// Copyright 2005-2010, 2012, 2017 Albert Astals Cid <aacid@kde.org>
// Copyright 2009 Ryszard Trojnacki <rysiek@menel.com>
// Copyright 2010 Carlos Garcia Campos <carlosgc@gnome.org>
// Copyright 2011 Daiki Ueno <ueno@unixuser.org>
// Copyright 2011 Tomas Hoger <thoger@redhat.com>
// Copyright 2012, 2013 Thomas Freitag <Thomas.Freitag@alfa.de>
+// Copyright 2017 Adrian Johnson <ajohnson@redneon.com>
//
//========================================================================
@@ -60,18 +61,14 @@ static void str_term_source(j_decompress_ptr cinfo)
{
}
-DCTStream::DCTStream(Stream *strA, int colorXformA, Object *dict, int recursion) :
+DCTStream::DCTStream(Stream *strA, int colorXformA, Dict *dict, int recursion) :
FilterStream(strA) {
colorXform = colorXformA;
if (dict != NULL) {
- Object obj;
-
- dict->dictLookup("Width", &obj, recursion);
+ Object obj = dict->lookup("Width", recursion);
err.width = (obj.isInt() && obj.getInt() <= JPEG_MAX_DIMENSION) ? obj.getInt() : 0;
- obj.free();
- dict->dictLookup("Height", &obj, recursion);
+ obj = dict->lookup("Height", recursion);
err.height = (obj.isInt() && obj.getInt() <= JPEG_MAX_DIMENSION) ? obj.getInt() : 0;
- obj.free();
} else
err.height = err.width = 0;
init();
@@ -232,8 +229,10 @@ int DCTStream::getChar() {
}
int DCTStream::getChars(int nChars, Guchar *buffer) {
- int c;
- for (int i = 0; i < nChars; ++i) {
+ // Use volatile to prevent the compiler optimizing
+ // variables into registers. See setjmp man page.
+ volatile int i, c;
+ for (i = 0; i < nChars; ++i) {
DO_GET_CHAR
if (likely(c != EOF)) buffer[i] = c;
else return i;