@@ -1536,32 +1536,25 @@ static struct PyModuleDef moduledef = { PyModuleDef_HEAD_INIT, "ft2font" };
15361536
15371537PyMODINIT_FUNC PyInit_ft2font (void )
15381538{
1539- PyObject *m;
1540-
15411539 import_array ();
15421540
1543- m = PyModule_Create (&moduledef);
1544-
1545- if (m == NULL ) {
1546- return NULL ;
1541+ if (FT_Init_FreeType (&_ft2Library)) { // initialize library
1542+ return PyErr_Format (
1543+ PyExc_RuntimeError, " Could not initialize the freetype2 library" );
15471544 }
1548-
1549- if (!PyFT2Image_init_type (m, &PyFT2ImageType)) {
1550- Py_DECREF (m);
1551- return NULL ;
1552- }
1553-
1554- if (!PyGlyph_init_type (m, &PyGlyphType)) {
1555- Py_DECREF (m);
1556- return NULL ;
1557- }
1558-
1559- if (!PyFT2Font_init_type (m, &PyFT2FontType)) {
1560- Py_DECREF (m);
1561- return NULL ;
1562- }
1563-
1564- if (PyModule_AddIntConstant (m, " SCALABLE" , FT_FACE_FLAG_SCALABLE) ||
1545+ FT_Int major, minor, patch;
1546+ char version_string[64 ];
1547+ FT_Library_Version (_ft2Library, &major, &minor, &patch);
1548+ sprintf (version_string, " %d.%d.%d" , major, minor, patch);
1549+
1550+ PyObject *m = PyModule_Create (&moduledef);
1551+ if (!m ||
1552+ !PyFT2Image_init_type (m, &PyFT2ImageType) ||
1553+ !PyGlyph_init_type (m, &PyGlyphType) ||
1554+ !PyFT2Font_init_type (m, &PyFT2FontType) ||
1555+ PyModule_AddStringConstant (m, " __freetype_version__" , version_string) ||
1556+ PyModule_AddStringConstant (m, " __freetype_build_type__" , STRINGIFY (FREETYPE_BUILD_TYPE)) ||
1557+ PyModule_AddIntConstant (m, " SCALABLE" , FT_FACE_FLAG_SCALABLE) ||
15651558 PyModule_AddIntConstant (m, " FIXED_SIZES" , FT_FACE_FLAG_FIXED_SIZES) ||
15661559 PyModule_AddIntConstant (m, " FIXED_WIDTH" , FT_FACE_FLAG_FIXED_WIDTH) ||
15671560 PyModule_AddIntConstant (m, " SFNT" , FT_FACE_FLAG_SFNT) ||
@@ -1597,33 +1590,8 @@ PyMODINIT_FUNC PyInit_ft2font(void)
15971590 PyModule_AddIntConstant (m, " LOAD_TARGET_MONO" , (unsigned long )FT_LOAD_TARGET_MONO) ||
15981591 PyModule_AddIntConstant (m, " LOAD_TARGET_LCD" , (unsigned long )FT_LOAD_TARGET_LCD) ||
15991592 PyModule_AddIntConstant (m, " LOAD_TARGET_LCD_V" , (unsigned long )FT_LOAD_TARGET_LCD_V)) {
1600- Py_DECREF (m);
1601- return NULL ;
1602- }
1603-
1604- // initialize library
1605- int error = FT_Init_FreeType (&_ft2Library);
1606-
1607- if (error) {
1608- PyErr_SetString (PyExc_RuntimeError, " Could not initialize the freetype2 library" );
1609- Py_DECREF (m);
1610- return NULL ;
1611- }
1612-
1613- {
1614- FT_Int major, minor, patch;
1615- char version_string[64 ];
1616-
1617- FT_Library_Version (_ft2Library, &major, &minor, &patch);
1618- sprintf (version_string, " %d.%d.%d" , major, minor, patch);
1619- if (PyModule_AddStringConstant (m, " __freetype_version__" , version_string)) {
1620- Py_DECREF (m);
1621- return NULL ;
1622- }
1623- }
1624-
1625- if (PyModule_AddStringConstant (m, " __freetype_build_type__" , STRINGIFY (FREETYPE_BUILD_TYPE))) {
1626- Py_DECREF (m);
1593+ FT_Done_FreeType (_ft2Library);
1594+ Py_XDECREF (m);
16271595 return NULL ;
16281596 }
16291597
0 commit comments