diff options
author | Stefan Eßer <se@FreeBSD.org> | 2020-07-10 11:00:40 +0000 |
---|---|---|
committer | Stefan Eßer <se@FreeBSD.org> | 2020-07-10 11:00:40 +0000 |
commit | ee177a09be9c81bf1c3e00326e1d38e6edb8e2a4 (patch) | |
tree | af0a59f24a08cefcc253c012ce216f16651e30aa /src | |
parent | 3960d8924a1a0ba2f0f5e8510e73a10ee20d726b (diff) | |
download | src-ee177a09be9c81bf1c3e00326e1d38e6edb8e2a4.tar.gz src-ee177a09be9c81bf1c3e00326e1d38e6edb8e2a4.zip |
Upgrade to version 3.1.3vendor/bc/3.1.3
This version fixes an incompatibility with GNU bc.
Notes
Notes:
svn path=/vendor/bc/dist/; revision=363074
svn path=/vendor/bc/3.1.3/; revision=363075; tag=vendor/bc/3.1.3
Diffstat (limited to 'src')
-rw-r--r-- | src/vm.c | 17 |
1 files changed, 15 insertions, 2 deletions
@@ -602,8 +602,21 @@ restart: else if (BC_ERR(string)) bc_parse_err(&vm.prs, BC_ERROR_PARSE_STRING); #if BC_ENABLED - else if (BC_IS_BC && BC_ERR(BC_PARSE_NO_EXEC(&vm.prs))) - bc_parse_err(&vm.prs, BC_ERROR_PARSE_BLOCK); + else if (BC_IS_BC && BC_ERR(BC_PARSE_NO_EXEC(&vm.prs))) { + + size_t i; + bool good = true; + + for (i = 0; good && i < vm.prs.flags.len; ++i) { + uint16_t flag = *((uint16_t*) bc_vec_item(&vm.prs.flags, i)); + good = ((flag & BC_PARSE_FLAG_BRACE) != BC_PARSE_FLAG_BRACE); + } + + if (good) { + while (BC_PARSE_IF_END(&vm.prs)) bc_vm_process("else {}", true); + } + else bc_parse_err(&vm.prs, BC_ERROR_PARSE_BLOCK); + } #endif // BC_ENABLED } |