Я решил проблему с сегфолтом MODULE под линукс.
Использовал sjasmplus-src-1.07-rc7
Вот два патча.
Первый:
Код:--- directives.cpp.old 2008-04-02 10:21:16.000000000 +0700 +++ directives.cpp 2011-02-23 20:39:10.445291480 +0600 @@ -465,7 +465,7 @@ void dirMODULE() { char* n; - ModuleList = new CStringsList(ModuleName, ModuleList); + // ModuleList = new CStringsList(ModuleName, ModuleList); if (ModuleName != NULL) { delete[] ModuleName; } @@ -474,6 +474,9 @@ if (ModuleName == NULL) { Error("No enough memory!", 0, FATAL); } +// +ModuleList = new CStringsList(ModuleName, ModuleList); +// } else { Error("[MODULE] Syntax error", 0, CATCHALL); } @@ -483,8 +486,14 @@ if (ModuleList) { if (ModuleName != NULL) { delete[] ModuleName; - } - if (ModuleList->string != NULL) { +// +ModuleName = NULL; +// + } +// +ModuleList = ModuleList->next; +// + if ( (ModuleList) && (ModuleList->string != NULL) ) { ModuleName = STRDUP(ModuleList->string); if (ModuleName == NULL) { Error("No enough memory!", 0, FATAL); @@ -492,7 +501,7 @@ } else { ModuleName = NULL; } - ModuleList = ModuleList->next; +// ModuleList = ModuleList->next; } else { Error("ENDMODULE without MODULE", 0); }
И второй:
Прошу автора воткнуть исправления в основную ветку. Модули - штука хорошая.Код:--- sjdefs.h.old 2008-04-01 17:41:58.000000000 +0700 +++ sjdefs.h 2011-02-23 19:54:45.036263394 +0600 @@ -120,6 +120,7 @@ #include "io_snapshots.h" #include "io_trd.h" #include "sjasm.h" +#include <stdlib.h> #endif //eof sjdefs.h
---------- Post added at 21:01 ---------- Previous post was at 21:00 ----------
В догонку.
Тут уже эту проблему где-то решали, но директива ENDMODULE неправильно у меня тем способом работала.




Ответить с цитированием