Catch segfault for half defined #defines and provide a warning for #unkowns
This commit is contained in:
parent
67786705a5
commit
55929d4ddf
19
cc_macro.c
19
cc_macro.c
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1 +1 @@
|
|||
dad8b8bddecc2a7b9e23c387daf3e74e7268da415c56cecbaef1f4bae23aed20 test/test1000/proof
|
||||
9ddace917535db9ad89c8aa035e3e90145de84cefb2f80b3c18cf36389b02633 test/test1000/proof
|
||||
|
|
Loading…
Reference in New Issue