From 876ebe7c68b86011d74bde889cd51b7bd745a7b2 Mon Sep 17 00:00:00 2001 From: Jeremiah Orians Date: Sat, 6 Nov 2021 22:36:02 -0400 Subject: [PATCH] catch half broken #define (statements --- cc_macro.c | 12 ++++++++++++ test/test.answers | 12 ++++++------ test/test1000/proof.answer | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/cc_macro.c b/cc_macro.c index a0b42ea..b028361 100644 --- a/cc_macro.c +++ b/cc_macro.c @@ -179,6 +179,12 @@ int macro_variable() struct macro_list* hold = lookup_macro(macro_token); if (NULL != hold) { + if(NULL == hold->expansion) + { + line_error_token(macro_token); + fputs("hold->expansion is a null\n", stderr); + exit(EXIT_FAILURE); + } value = strtoint(hold->expansion->s); } eat_current_token(); @@ -236,6 +242,12 @@ int macro_primary_expr() if(TRUE == defined_has_paren) { + if(NULL == macro_token) + { + line_error_token(macro_token); + fputs("unterminated define ( statement\n", stderr); + exit(EXIT_FAILURE); + } require(')' == macro_token->s[0], "missing close parenthesis for defined()\n"); eat_current_token(); } diff --git a/test/test.answers b/test/test.answers index 8b52dfe..e6c67f4 100644 --- a/test/test.answers +++ b/test/test.answers @@ -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 -c8360bf5cf47fe68593c5163b0d72db2026563cd3ae9d6569b4e359d5ddf5055 test/results/test1000-aarch64-binary -be6b2b9d3c5da922f2c101b1a1ae3140a2dd4077c9326359b7e5eb4ee3941cf5 test/results/test1000-amd64-binary -6023ece6bedd28707824893d08787f4e796d5e13d8dfcdd61a6c5092e6281d77 test/results/test1000-armv7l-binary -57e67dd208599e752088e78c866c9f40a3dde62d8eb39ce879b41f8ab6b1864d test/results/test1000-knight-posix-binary -dd31a53ba38aa7d0520a490ee1b9c170b5be7a5114b6e0c26a802ecd3eccd1e3 test/results/test1000-riscv64-binary -b26a20f63827cf018b47cf256f20fcc6176cf7cfee28d2e114d945477b53a57e test/results/test1000-x86-binary +477b8c9d4a93825224f1a5974a46781c60f2fb5a5c7d1e80a406495261394beb test/results/test1000-aarch64-binary +4333f7916d87482c04691eab6b2ab9777b2d59b9fe4988b021da8776a57c3e8b test/results/test1000-amd64-binary +49008f8515f84b2144df557d3e79a633647012017158fe38ec64886cbfb06d2f test/results/test1000-armv7l-binary +0a68e25f5e77860c6237249b810aaab145a485de22a43c563324f4c6eb44acb2 test/results/test1000-knight-posix-binary +8b19ec018b42fb163b4ae0228e2439cd78efd9d657d70208bbf0d4d2b3655c01 test/results/test1000-riscv64-binary +02da277331c4d6fc9b3365876bb3713bc9a3f417577fd1bac9be2c0d7fa52b82 test/results/test1000-x86-binary diff --git a/test/test1000/proof.answer b/test/test1000/proof.answer index 2c66e1d..ec9c635 100644 --- a/test/test1000/proof.answer +++ b/test/test1000/proof.answer @@ -1 +1 @@ -051da13047c134784983be80777706b8578fed66c45f46702e0c0492b83e413b test/test1000/proof +2ea3bc29dd584e94a68644dca165722c67466b88b6b3bae3a36e231298c8f020 test/test1000/proof