cairo_ft_font_face_create_for_ft_face causes segmentation fault
Submitted by lon..@..il.com
Assigned to David Turner
Link to original bug (#106967)
Description
I am using cairo on MinGW-w64, Windows 10. The following code produces a crash:
#include <ft2build.h>
#include <cairo/cairo.h>
#include <cairo/cairo-ft.h>
int main(){
FT_Library ft;
FT_Face textFont;
cairo_font_face_t *cairoFont;
FT_Init_FreeType(&ft);
FT_New_Face(ft,"Hack-Regular.ttf",0,&textFont);
cairoFont = cairo_ft_font_face_create_for_ft_face(textFont,0); // This line produces segmentation fault
return 0;
}
The problem seems to be that EnterCriticalSection is called before InitializeCriticalSection. A quick workaround is to initialize it manually:
#include <ft2build.h>
#include <cairo/cairo.h>
#include <cairo/cairo-ft.h>
extern "C" void _cairo_mutex_initialize();
int main(){
FT_Library ft;
FT_Face textFont;
cairo_font_face_t *cairoFont;
FT_Init_FreeType(&ft);
FT_New_Face(ft,"Hack-Regular.ttf",0,&textFont);
_cairo_mutex_initialize(); //This eliminates the segfault
cairoFont = cairo_ft_font_face_create_for_ft_face(textFont,0);
return 0;
}
Version: 1.12.14