Вроде как, накопал еще одну багу.
Суть: Если внутри модуля есть INCLUDE, внутри которого тоже есть модуль, ужасм ингода падает во время компиляции. Маловероятно, что это наведено моим предыдущим фиксом со структурами без меток.
В общем, в directives.cpp, dirMODULE() было так:
Код:
ModuleName = (char*)realloc(ModuleName,strlen(n)+strlen(ModuleName)+2);
if (ModuleName == NULL) {
Error("Not enough memory!", 0, FATAL);
}
STRCAT(ModuleName, sizeof("."), ".");
STRCAT(ModuleName, sizeof(n), n);
Падало в STRCAT (дебажная версия говорила, что стринг не заканчивается null'ом).
Стало так:
Код:
ModuleName = (char*)realloc(ModuleName, strlen(n) + strlen(ModuleName) + 200);
if (ModuleName == NULL) {
Error("Not enough memory!", 0, FATAL);
}
strcat(ModuleName, ".");
strcat(ModuleName, n);
Так не падает и вроде как компилит. Просьба к сишника и авторам репозиториев оценить фикс. Я не знаю разницы между STRCAT и strcat, оно помогло. Я тоже потестирую исправление.