diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-03-11 14:05:06 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2024-03-11 14:05:06 -0300 |
| commit | 65b07dd53d7938a60112fc4473f5cad3473e3534 (patch) | |
| tree | 469c75dba3b194c494b6ad6a30ca44e7e8354ef5 /lapi.h | |
| parent | 7237eb3f1c480d6bc7fe2832ddd36f2137fb69d9 (diff) | |
| download | lua-65b07dd53d7938a60112fc4473f5cad3473e3534.tar.gz lua-65b07dd53d7938a60112fc4473f5cad3473e3534.tar.bz2 lua-65b07dd53d7938a60112fc4473f5cad3473e3534.zip | |
API asserts for illegal pops of to-be-closed variables
Diffstat (limited to 'lapi.h')
| -rw-r--r-- | lapi.h | 14 |
1 files changed, 12 insertions, 2 deletions
| @@ -29,8 +29,18 @@ | |||
| 29 | 29 | ||
| 30 | /* Ensure the stack has at least 'n' elements */ | 30 | /* Ensure the stack has at least 'n' elements */ |
| 31 | #define api_checknelems(L,n) \ | 31 | #define api_checknelems(L,n) \ |
| 32 | api_check(L, (n) < (L->top.p - L->ci->func.p), \ | 32 | api_check(L, (n) < (L->top.p - L->ci->func.p), \ |
| 33 | "not enough elements in the stack") | 33 | "not enough elements in the stack") |
| 34 | |||
| 35 | |||
| 36 | /* Ensure the stack has at least 'n' elements to be popped. (Some | ||
| 37 | ** functions only update a slot after checking it for popping, but that | ||
| 38 | ** is only an optimization for a pop followed by a push.) | ||
| 39 | */ | ||
| 40 | #define api_checkpop(L,n) \ | ||
| 41 | api_check(L, (n) < L->top.p - L->ci->func.p && \ | ||
| 42 | L->tbclist.p < L->top.p - (n), \ | ||
| 43 | "not enough free elements in the stack") | ||
| 34 | 44 | ||
| 35 | 45 | ||
| 36 | /* | 46 | /* |
