FTOutlineGlyphImpl, FTPolygonGlyphImpl: avoid uninizitalized vectoriser in case of error (see Debian bug #589601, 1.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
diff --git a/src/FTGlyph/FTOutlineGlyph.cpp b/src/FTGlyph/FTOutlineGlyph.cpp
index 3755072..a191a92 100644
--- a/src/FTGlyph/FTOutlineGlyph.cpp
+++ b/src/FTGlyph/FTOutlineGlyph.cpp
@@ -64,6 +64,7 @@ const FTPoint& FTOutlineGlyph::Render(const FTPoint& pen, int renderMode)
FTOutlineGlyphImpl::FTOutlineGlyphImpl(FT_GlyphSlot glyph, float _outset,
bool useDisplayList)
: FTGlyphImpl(glyph),
+ vectoriser(0),
glList(0)
{
if(ft_glyph_format_outline != glyph->format)
diff --git a/src/FTGlyph/FTPolygonGlyph.cpp b/src/FTGlyph/FTPolygonGlyph.cpp
index 823b671..9562d33 100644
--- a/src/FTGlyph/FTPolygonGlyph.cpp
+++ b/src/FTGlyph/FTPolygonGlyph.cpp
@@ -64,6 +64,7 @@ const FTPoint& FTPolygonGlyph::Render(const FTPoint& pen, int renderMode)
FTPolygonGlyphImpl::FTPolygonGlyphImpl(FT_GlyphSlot glyph, float _outset,
bool useDisplayList)
: FTGlyphImpl(glyph),
+ vectoriser(0),
glList(0)
{
if(ft_glyph_format_outline != glyph->format)
diff --git a/test/FTOutlineFont-UnInVec.cpp b/test/FTOutlineFont-UnInVec.cpp
new file mode 100644
index 0000000..c92cbc9
--- /dev/null
+++ b/test/FTOutlineFont-UnInVec.cpp
@@ -0,0 +1,44 @@
+//$LIBS_PKG_CONFIG glu gl ftgl fontconfig
+//$LIBS -lglut
+
+#include <GL/glut.h>
+#include <FTGL/ftgl.h>
+
+FTFont *font;
+
+void display ()
+{
+ glClear (GL_COLOR_BUFFER_BIT);
+ glMatrixMode (GL_PROJECTION);
+ glLoadIdentity ();
+ gluPerspective (90, 1, 1, 1000);
+ glMatrixMode (GL_MODELVIEW);
+ glLoadIdentity ();
+ gluLookAt (0, 0, 200, 0, 0, 0, 0, 1, 0);
+ glPushMatrix ();
+ glColor3f (1, 1, 1);
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glTranslatef (-100, 100, 0);
+ font->Render ("Test", -1, FTPoint (), FTPoint (), FTGL::RENDER_FRONT | FTGL::RENDER_BACK);
+ glPopMatrix ();
+ glutSwapBuffers ();
+}
+
+int main (int argc, char **argv)
+{
+ glutInit (&argc, argv);
+ glutInitDisplayMode (GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE | GLUT_MULTISAMPLE);
+ glutInitWindowPosition (50, 50);
+ glutInitWindowSize (400, 400);
+ glutCreateWindow ("FTGL Test");
+ glutDisplayFunc (display);
+ const char *file = "/usr/share/fonts/X11/100dpi/timR12-ISO8859-1.pcf.gz";
+ font = new FTOutlineFont (file);
+ if (font->Error () || !font->FaceSize (17))
+ {
+ fprintf (stderr, "Failed to open font %s\n", file);
+ return 1;
+ }
+ glutMainLoop ();
+}
diff --git a/test/FTPolygonFont-UnInVec.cpp b/test/FTPolygonFont-UnInVec.cpp
new file mode 100644
index 0000000..5186e24
--- /dev/null
+++ b/test/FTPolygonFont-UnInVec.cpp
@@ -0,0 +1,44 @@
+//$LIBS_PKG_CONFIG glu gl ftgl fontconfig
+//$LIBS -lglut
+
+#include <GL/glut.h>
+#include <FTGL/ftgl.h>
+
+FTFont *font;
+
+void display ()
+{
+ glClear (GL_COLOR_BUFFER_BIT);
+ glMatrixMode (GL_PROJECTION);
+ glLoadIdentity ();
+ gluPerspective (90, 1, 1, 1000);
+ glMatrixMode (GL_MODELVIEW);
+ glLoadIdentity ();
+ gluLookAt (0, 0, 200, 0, 0, 0, 0, 1, 0);
+ glPushMatrix ();
+ glColor3f (1, 1, 1);
+ glEnable (GL_BLEND);
+ glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glTranslatef (-100, 100, 0);
+ font->Render ("Test", -1, FTPoint (), FTPoint (), FTGL::RENDER_FRONT | FTGL::RENDER_BACK);
+ glPopMatrix ();
+ glutSwapBuffers ();
+}
+
+int main (int argc, char **argv)
+{
+ glutInit (&argc, argv);
+ glutInitDisplayMode (GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE | GLUT_MULTISAMPLE);
+ glutInitWindowPosition (50, 50);
+ glutInitWindowSize (400, 400);
+ glutCreateWindow ("FTGL Test");
+ glutDisplayFunc (display);
+ const char *file = "/usr/share/fonts/X11/100dpi/timR12-ISO8859-1.pcf.gz";
+ font = new FTPolygonFont (file);
+ if (font->Error () || !font->FaceSize (17))
+ {
+ fprintf (stderr, "Failed to open font %s\n", file);
+ return 1;
+ }
+ glutMainLoop ();
+}