Created attachment 75462 [details] Screenshot of the faulty rendering Attached PDF file renders wrong when the window size is grown enough or if shown in presentation mode. The said PDF is reported to work correctly with poppler 0.18, version I am using is 0.22.1. The file also works correctly in adobe reader and Foxit reader for example.
Created attachment 75463 [details] The PDF file which can be used to reproduce
FWIW Fabio says he's git bisecting the error
According to some git bisect tests, it seems that wrong rendering started with 3349a8dd7e0469cc5b5aaa8dd929c6078183ef86 Splash: Avoid bogus memory error for tilingPattern
(In reply to comment #3) > According to some git bisect tests, it seems that wrong rendering started > with > 3349a8dd7e0469cc5b5aaa8dd929c6078183ef86 > Splash: Avoid bogus memory error for tilingPattern Yes, You're true, Fabio: It is this part of SplashOutputDev::tilingPatternFill: + if ((unsigned long) result_width * result_height > 0x800000L) + return gFalse; It's quite easy to solve: if ((unsigned long) result_width * result_height > 0x10000000L) return gFalse; (which means a new limit of 16384 * 16384 pixel) BUT: This also means, that Gfx::doTilingPatternFill doesn't wotk correctly with this sample, because returning false means that Gfx should do the work by its own. @Albert: Should I try to solve the Gfx::doTilingPatternFill bug, or can You live with the new limit?
Created attachment 75569 [details] [review] tiling pattern fix Damnish! Of course it was once again my mistake: The problem was NOT in Gfx::doTilingPatternFill, but that SplashOutputDev::tilingPatternFill already changed the CTM and didn't restore it on this emergency exit. The attached patch solves it.
Should we do the same in the return gFalse of if (!isfinite(ctm[i])) ?
Created attachment 75727 [details] [review] tiling pattern fix (In reply to comment #6) > Should we do the same in the return gFalse of if (!isfinite(ctm[i])) ? Oh, very attentively. And of course everywhere where it returns gFalse, even if I don't think that Gfx::doTilingPatternFill is then able to draw the tiling pattern correctly. But at least it is cleaner code. The attached patch does it!
Commited
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.