Catch segfault for half defined #defines and provide a warning for #unkowns

This commit is contained in:
Jeremiah Orians 2021-10-21 21:27:16 -04:00
parent 67786705a5
commit 55929d4ddf
No known key found for this signature in database
GPG Key ID: 6B3A3F198708F894
3 changed files with 25 additions and 8 deletions

View File

@ -359,7 +359,8 @@ int macro_expression()
void handle_define()
{
struct macro_list* hold;
struct token_list* expansion_end;
struct token_list* expansion_end = NULL;
struct token_list* line_start = macro_token;
eat_current_token();
@ -381,6 +382,12 @@ void handle_define()
if ('\n' == macro_token->s[0])
{
if(NULL == expansion_end)
{
line_error_token(line_start);
fputs("#define missing actual definition\n", stderr);
exit(EXIT_FAILURE);
}
expansion_end->next = NULL;
return;
}
@ -459,6 +466,16 @@ void macro_directive()
}
else
{
if(!match("#include", macro_token->s))
{
/* Put a big fat warning but see if we can just ignore */
fputs(">>WARNING<<\n>>WARNING<<\n", stderr);
line_error_token(macro_token);
fputs("feature: ", stderr);
fputs(macro_token->s, stderr);
fputs(" unsupported in M2-Planet\nIgnoring line, may result in bugs\n>>WARNING<<\n>>WARNING<<\n\n", stderr);
}
/* unhandled macro directive; let's eat until a newline; om nom nom */
while(TRUE)
{

View File

@ -212,9 +212,9 @@ eb1f6aab09a1a4966f9f49a518d8aa03ca97aa7c46e443871d758a306671a85e test/results/t
a2cbfd5f76d3be8049c6737e3fa02f191caf29b6885db006fa23f86e6eacc186 test/results/test0106-knight-posix-binary
d75e450e2fcdf19df63f9d6a3fe5e032933e57b33f6f06b39a8ed2f3dc759f17 test/results/test0106-riscv64-binary
473cc504d6cba9eaf648abcf15c83a317ff3f4a7f08f5e8936e3b35b2cc4fbc6 test/results/test0106-x86-binary
af40eec9f8fedb23d073696a02e11e04bb5446ed97bcbd0b79bf9101fa4d7b23 test/results/test1000-aarch64-binary
6d6186142d7277b81442bfa92f2ca1954a65c301470031dd92570ced92b1f294 test/results/test1000-amd64-binary
e3749d1d25de39147008ca6c439dc6b8e426f05b7a0a39eb3a12b9f224f30042 test/results/test1000-armv7l-binary
5b1bf70269464323c50db4003a525b412498f2ab37ff9cf7d9753f1213012ac5 test/results/test1000-knight-posix-binary
5aff9455f74ba67f30a2275fa91820b269fed55ed93c51bab4183ad3b3d797b2 test/results/test1000-riscv64-binary
3ef12a7978ba55bc922316bdc31d1f15962ee954f31967ac8080e59bcafaf7f1 test/results/test1000-x86-binary
1071ba48b488d819219d499df231dbfa8c563651418810371bdc43e37ca9e5ce test/results/test1000-aarch64-binary
e2e37c4d5d15ca647699b2bd32858b842ce9718e780d7e5a7771087948d4e36a test/results/test1000-amd64-binary
4b6560f40038a37beaa6e02018a8058e42e48ae60f2e6cec6536fc8cf74aca1e test/results/test1000-armv7l-binary
e49004d44844da98f993af2f8536048c6b389e653d611c8dc27bde70ba026118 test/results/test1000-knight-posix-binary
c55cf7ffc36b8d81fa06b65a362f680b0d43d3527672b87e4150ebecd63d92b9 test/results/test1000-riscv64-binary
610050fdc4005e36c13d881e6eedc08c7a4710bd3ad9a1cef007e29958fdbf04 test/results/test1000-x86-binary

View File

@ -1 +1 @@
dad8b8bddecc2a7b9e23c387daf3e74e7268da415c56cecbaef1f4bae23aed20 test/test1000/proof
9ddace917535db9ad89c8aa035e3e90145de84cefb2f80b3c18cf36389b02633 test/test1000/proof