diff options
Diffstat (limited to 'Build/source/libs/xpdf/xpdf-src/xpdf/TileMap.cc')
-rw-r--r-- | Build/source/libs/xpdf/xpdf-src/xpdf/TileMap.cc | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Build/source/libs/xpdf/xpdf-src/xpdf/TileMap.cc b/Build/source/libs/xpdf/xpdf-src/xpdf/TileMap.cc index 6db67738d70..d1a5aea2963 100644 --- a/Build/source/libs/xpdf/xpdf-src/xpdf/TileMap.cc +++ b/Build/source/libs/xpdf/xpdf-src/xpdf/TileMap.cc @@ -592,6 +592,11 @@ GBool TileMap::cvtWindowToDev(int xw, int yw, offsetY = 0; } *pg = findContinuousPage(yw - offsetY + state->getScrollY()); + if (*pg < 1 || *pg > state->getDoc()->getNumPages()) { + *pg = 0; + *xd = *yd = 0; + return gFalse; + } pageW1 = pageW[*pg - 1]; pageH1 = pageH[*pg - 1]; if (maxW < state->getWinW()) { @@ -655,6 +660,11 @@ GBool TileMap::cvtWindowToDev(int xw, int yw, offsetY = 0; } *pg = findSideBySideContinuousPage(yw - offsetY + state->getScrollY()); + if (*pg < 1 || *pg > state->getDoc()->getNumPages()) { + *pg = 0; + *xd = *yd = 0; + return gFalse; + } pageW1 = pageW[*pg - 1]; pageH1 = pageH[*pg - 1]; if (*pg + 1 <= state->getDoc()->getNumPages()) { @@ -693,6 +703,11 @@ GBool TileMap::cvtWindowToDev(int xw, int yw, offsetX = 0; } *pg = findHorizContinuousPage(xw - offsetX + state->getScrollX()); + if (*pg < 1 || *pg > state->getDoc()->getNumPages()) { + *pg = 0; + *xd = *yd = 0; + return gFalse; + } pageW1 = pageW[*pg - 1]; pageH1 = pageH[*pg - 1]; if (maxH < state->getWinH()) { |