[Poppler-bugs] [Bug 25578] Seen crahses in Fixed Point
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Fri Dec 11 15:04:09 PST 2009
http://bugs.freedesktop.org/show_bug.cgi?id=25578
--- Comment #4 from Albert Astals Cid <tsdgeos at terra.es> 2009-12-11 15:04:09 PST ---
The patch is wrong for several reasons:
* FixedPoint val field is suposed to be a 16.16 value, you are turning it into
a 64 bits value which removes the point of using FixedPoint arithmetics and you
could as well use the regular double one
* You made div return 0 when diving by -1
The actual problem is that the multiplication of 215.876 * 215.876 doesn't fit
in a 16.16 field
Of course the obvious fix is not using FixedPoint math for that multiplication
diff --git a/splash/SplashFTFont.cc b/splash/SplashFTFont.cc
index d4675f7..65371ba 100644
--- a/splash/SplashFTFont.cc
+++ b/splash/SplashFTFont.cc
@@ -40,6 +40,8 @@
#include "SplashFTFontFile.h"
#include "SplashFTFont.h"
+#include <cmath>
+
//------------------------------------------------------------------------
static int glyphPathMoveTo(const FT_Vector *pt, void *path);
@@ -67,13 +69,13 @@ SplashFTFont::SplashFTFont(SplashFTFontFile *fontFileA,
SplashCoord *matA,
return;
}
face->size = sizeObj;
- size = splashSqrt(mat[2]*mat[2] + mat[3]*mat[3]);
+ size = sqrt((double)mat[2]*(double)mat[2] + (double)mat[3]*(double)mat[3]);
if (FT_Set_Pixel_Sizes(face, 0, (int)size)) {
return;
}
// if the textMat values are too small, FreeType's fixed point
// arithmetic doesn't work so well
- textScale = splashSqrt(textMat[2]*textMat[2] + textMat[3]*textMat[3]) /
size;
+ textScale = sqrt((double)textMat[2]*(double)textMat[2] +
(double)textMat[3]*(double)textMat[3]) / size;
div = face->bbox.xMax > 20000 ? 65536 : 1;
--
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the Poppler-bugs
mailing list