mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00

Fixes the next issue on windows. The fontconfig library is calling the function xmlCreatePushParserCtxt from libxml2, however, the function declaration was being omitted because fontconfig was not defining the LIBXML_PUSH_ENABLED preprocessor symbol. However, instead of a compile error, C's support for implicit function declrations allows it to happily call the function anyway, with the wrong ABI. The main issue was the return type being implicitly declared as "int" instead of a pointer. On my system this was causing the return pointer to be truncated to 32 bits and then sign-extended which caused a segfault once it was dereferenced. I've gone ahead and added the -Werror=implicit-function-declaration to fontconfig to avoid these issues in the future. However, this flag didn't compile on linux so I've left it as Windows only for now. I also needed to add the LIBXML_STATIC define because not defining it causes some functions on windows to be declared with `__declspec(dllimport)` which results in linker errors since we are actually statically linking libxml2.