diff options
Diffstat (limited to 'Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc')
-rw-r--r-- | Build/source/libs/poppler/poppler-src/poppler/DCTStream.cc | 19 |
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; |