[prev in list] [next in list] [prev in thread] [next in thread]
List: freedesktop-poppler
Subject: [poppler] 2 commits - poppler/SplashOutputDev.cc splash/Splash.cc
From: aacid () kemper ! freedesktop ! org (Albert Astals Cid)
Date: 2016-10-24 18:06:21
Message-ID: 20161024180621.47A5576261 () kemper ! freedesktop ! org
[Download RAW message or body]
poppler/SplashOutputDev.cc | 4 ++--
splash/Splash.cc | 38 ++++++++++++++++++++------------------
2 files changed, 22 insertions(+), 20 deletions(-)
New commits:
commit 2a09ec47aef8870dba345f4045e691ffb5a59f4d
Author: Albert Astals Cid <aacid@kde.org>
Date: Mon Oct 24 20:04:22 2016 +0200
Fix memory leak in parametrized gouraudTriangleShadedFill
diff --git a/poppler/SplashOutputDev.cc b/poppler/SplashOutputDev.cc
index 688540b..d454e0e 100644
--- a/poppler/SplashOutputDev.cc
+++ b/poppler/SplashOutputDev.cc
@@ -4762,17 +4762,17 @@ GBool SplashOutputDev::gouraudTriangleShadedFill(GfxState \
*state, GfxGouraudTria default:
break;
}
- SplashGouraudColor *splashShading = new \
SplashGouraudPattern(bDirectColorTranslation, state, shading, colorMode); // restore \
vector antialias because we support it here if (shading->isParameterized()) {
+ SplashGouraudColor *splashShading = new \
SplashGouraudPattern(bDirectColorTranslation, state, shading, colorMode); GBool vaa \
= getVectorAntialias(); GBool retVal = gFalse;
setVectorAntialias(gTrue);
retVal = splash->gouraudTriangleShadedFill(splashShading);
setVectorAntialias(vaa);
+ delete splashShading;
return retVal;
}
- delete splashShading;
return gFalse;
}
commit 169889b8e196cfcd288e6555fb048fbbf95ba3f6
Author: Albert Astals Cid <aacid@kde.org>
Date: Mon Oct 24 20:04:00 2016 +0200
Fix crash on broken files
diff --git a/splash/Splash.cc b/splash/Splash.cc
index e179c1c..46b8ce2 100644
--- a/splash/Splash.cc
+++ b/splash/Splash.cc
@@ -5745,24 +5745,26 @@ GBool Splash::gouraudTriangleShadedFill(SplashGouraudColor \
*shading) colorinterp = scanColorMap[0] * scanLimitL + scanColorMap[1];
bitmapOff = scanLineOff + scanLimitL * colorComps;
- for (int X = scanLimitL; X <= scanLimitR && bitmapOff + colorComps <= \
bitmapOffLimit; ++X, colorinterp += scanColorMap[0], bitmapOff += \
colorComps) {
- // FIXME : standard rectangular clipping can be done for a
- // complete scanline which is faster
- // --> see SplashClip and its methods
- if (!clip->test(X, Y))
- continue;
-
- assert(fabs(colorinterp - (scanColorMap[0] * X + scanColorMap[1])) < \
1e-10);
- assert(bitmapOff == Y * rowSize + colorComps * X && scanLineOff == Y * \
rowSize);
-
- shading->getParameterizedColor(colorinterp, bitmapMode, \
&bitmapData[bitmapOff]);
-
- // make the shading visible.
- // Note that opacity is handled by the bDirectBlit stuff, see
- // above for comments and below for implementation.
- if (hasAlpha)
- bitmapAlpha[Y * bitmapWidth + X] = 255;
- }
+ if (likely(bitmapOff >= 0)) {
+ for (int X = scanLimitL; X <= scanLimitR && bitmapOff + colorComps <= \
bitmapOffLimit; ++X, colorinterp += scanColorMap[0], bitmapOff += colorComps) { + \
// FIXME : standard rectangular clipping can be done for a + // complete scanline \
which is faster + // --> see SplashClip and its methods
+ if (!clip->test(X, Y))
+ continue;
+
+ assert(fabs(colorinterp - (scanColorMap[0] * X + scanColorMap[1])) < 1e-10);
+ assert(bitmapOff == Y * rowSize + colorComps * X && scanLineOff == Y * \
rowSize); +
+ shading->getParameterizedColor(colorinterp, bitmapMode, \
&bitmapData[bitmapOff]); +
+ // make the shading visible.
+ // Note that opacity is handled by the bDirectBlit stuff, see
+ // above for comments and below for implementation.
+ if (hasAlpha)
+ bitmapAlpha[Y * bitmapWidth + X] = 255;
+ }
+ }
}
}
} else {
_______________________________________________
poppler mailing list
poppler@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/poppler
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic