{
"ground_truth": [],
"labels": [
{"rule":"PRE00-C","file":"lapi.h","line":25,"verdict":"FP","confidence":"high","reason":"L is a lua_State* pointer, never a side-effecting expression at call sites"},
{"rule":"PRE01-C","file":"lapi.h","line":25,"verdict":"FP","confidence":"high","reason":"L used as struct member access base; no operator precedence hazard in practice"},
{"rule":"PRE12-C","file":"lapi.h","line":25,"verdict":"FP","confidence":"high","reason":"L is always a simple variable, never a side-effecting arg at call sites"},
{"rule":"PRE00-C","file":"lapi.h","line":45,"verdict":"FP","confidence":"high","reason":"L and nres are simple variables at all call sites; no multiple-eval hazard"},
{"rule":"PRE01-C","file":"lapi.h","line":45,"verdict":"FP","confidence":"high","reason":"L used in struct member access; precedence issue not reachable in practice"},
{"rule":"PRE02-C","file":"lapi.h","line":45,"verdict":"FP","confidence":"high","reason":"adjustresults is a statement macro used as a statement; outer parens not required"},
{"rule":"PRE10-C","file":"lapi.h","line":45,"verdict":"FP","confidence":"high","reason":"adjustresults used only as a standalone statement, never inside single-branch if without braces in Lua code"},
{"rule":"PRE12-C","file":"lapi.h","line":45,"verdict":"FP","confidence":"high","reason":"L is always a simple variable; no real multiple-eval risk"},
{"rule":"PRE00-C","file":"lapi.h","line":51,"verdict":"FP","confidence":"high","reason":"L and n are simple vars at all call sites; no multiple-eval hazard"},
{"rule":"PRE01-C","file":"lapi.h","line":51,"verdict":"FP","confidence":"high","reason":"L used as base for struct member access; no precedence problem"},
{"rule":"PRE02-C","file":"lapi.h","line":51,"verdict":"FP","confidence":"high","reason":"api_checknelems expansion is a single expression; outer parens not required"},
{"rule":"PRE12-C","file":"lapi.h","line":51,"verdict":"FP","confidence":"high","reason":"L is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lapi.h","line":60,"verdict":"FP","confidence":"high","reason":"L and n are simple variables; no multiple-eval hazard in practice"},
{"rule":"PRE01-C","file":"lapi.h","line":60,"verdict":"FP","confidence":"high","reason":"L used as struct member access base; no precedence hazard"},
{"rule":"PRE02-C","file":"lapi.h","line":60,"verdict":"FP","confidence":"high","reason":"api_checkpop is a single-expression macro; wrapping not required"},
{"rule":"PRE12-C","file":"lapi.h","line":60,"verdict":"FP","confidence":"high","reason":"L is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lcode.h","line":60,"verdict":"FP","confidence":"high","reason":"luaK_jumpto: fs is always a simple FuncState* variable at call sites"},
{"rule":"PRE12-C","file":"lcode.h","line":60,"verdict":"FP","confidence":"high","reason":"fs is always a simple variable; no actual multiple-eval risk"},
{"rule":"EXP37-C","file":"lcode.h","line":102,"verdict":"FP","confidence":"high","reason":"luaK_semerror is a proper variadic declaration with ...; no wrong type passed"},
{"rule":"MEM05-C","file":"lctype.c","line":28,"verdict":"FP","confidence":"high","reason":"luai_ctype_ is a fixed-size static array [UCHAR_MAX+2], not a VLA"},
{"rule":"PRE02-C","file":"lctype.h","line":58,"verdict":"FP","confidence":"high","reason":"lislalnum expands to testprop(...) which is already a single expression; outer parens not needed"},
{"rule":"PRE00-C","file":"lctype.h","line":71,"verdict":"FP","confidence":"high","reason":"ltolower(c): c is always a simple char/int variable at call sites"},
{"rule":"PRE02-C","file":"lctype.h","line":71,"verdict":"FP","confidence":"high","reason":"ltolower expands to a single expression result; outer parens not required"},
{"rule":"PRE12-C","file":"lctype.h","line":71,"verdict":"FP","confidence":"high","reason":"c is always a simple variable at call sites; no side-effecting arg found"},
{"rule":"DCL31-C","file":"lctype.h","line":77,"verdict":"FP","confidence":"high","reason":"LUAI_DDEC macro wraps a complete declaration; explicit type present inside"},
{"rule":"ENV01-C","file":"lctype.h","line":77,"verdict":"FP","confidence":"high","reason":"This is an array declaration, not an environment variable buffer"},
{"rule":"MEM05-C","file":"lctype.h","line":77,"verdict":"FP","confidence":"high","reason":"LUAI_DDEC of luai_ctype_[UCHAR_MAX+2] is a fixed-size declaration, not a VLA"},
{"rule":"PRE00-C","file":"lctype.h","line":89,"verdict":"FP","confidence":"high","reason":"lislalpha(c): c is always a simple variable; no multiple-eval hazard"},
{"rule":"PRE12-C","file":"lctype.h","line":89,"verdict":"FP","confidence":"high","reason":"c is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lctype.h","line":90,"verdict":"FP","confidence":"high","reason":"lislalnum(c): c is always a simple variable; no multiple-eval hazard"},
{"rule":"PRE12-C","file":"lctype.h","line":90,"verdict":"FP","confidence":"high","reason":"c is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"ldebug.h","line":21,"verdict":"FP","confidence":"high","reason":"resethookcount(L): L is always a simple lua_State* at call sites"},
{"rule":"PRE01-C","file":"ldebug.h","line":21,"verdict":"FP","confidence":"high","reason":"L used as struct member base; no operator precedence hazard"},
{"rule":"PRE12-C","file":"ldebug.h","line":21,"verdict":"FP","confidence":"high","reason":"L is always a simple variable; no side-effecting arg"},
{"rule":"EXP37-C","file":"ldebug.h","line":57,"verdict":"FP","confidence":"high","reason":"luaG_runerror has proper variadic declaration; no wrong-type call"},
{"rule":"DCL13-C","file":"ldebug.h","line":59,"verdict":"FP","confidence":"high","reason":"src parameter in luaG_addinfo is passed to functions that may require non-const; const correct as-is"},
{"rule":"PRE00-C","file":"ldo.h","line":31,"verdict":"FP","confidence":"high","reason":"condmovestack: L/pre/pos are always simple vars or empty expressions"},
{"rule":"PRE01-C","file":"ldo.h","line":31,"verdict":"FP","confidence":"high","reason":"pre/pos are statement expressions; no operator precedence hazard"},
{"rule":"PRE01-C","file":"ldo.h","line":31,"verdict":"FP","confidence":"high","reason":"pos is a statement expression; no operator precedence hazard"},
{"rule":"PRE10-C","file":"ldo.h","line":31,"verdict":"FP","confidence":"high","reason":"condmovestack always used in compound statement context in Lua source"},
{"rule":"PRE12-C","file":"ldo.h","line":31,"verdict":"FP","confidence":"high","reason":"L is always a simple variable; no multiple-eval risk"},
{"rule":"PRE00-C","file":"ldo.h","line":35,"verdict":"FP","confidence":"high","reason":"luaD_checkstackaux: all params are simple vars or empty exprs at call sites"},
{"rule":"PRE01-C","file":"ldo.h","line":35,"verdict":"FP","confidence":"high","reason":"L used as struct member base; no precedence hazard"},
{"rule":"PRE01-C","file":"ldo.h","line":35,"verdict":"FP","confidence":"high","reason":"pre is always a void expression; no precedence issue"},
{"rule":"PRE01-C","file":"ldo.h","line":35,"verdict":"FP","confidence":"high","reason":"pos is always a void expression; no precedence issue"},
{"rule":"PRE02-C","file":"ldo.h","line":35,"verdict":"FP","confidence":"high","reason":"luaD_checkstackaux is a statement macro; outer parens not applicable"},
{"rule":"PRE10-C","file":"ldo.h","line":35,"verdict":"FP","confidence":"high","reason":"luaD_checkstackaux always used as standalone statement in Lua code"},
{"rule":"PRE12-C","file":"ldo.h","line":35,"verdict":"FP","confidence":"high","reason":"L is always a simple variable at call sites"},
{"rule":"PRE01-C","file":"ldo.h","line":45,"verdict":"FP","confidence":"high","reason":"savestack macro: L used as struct base; no precedence hazard"},
{"rule":"PRE01-C","file":"ldo.h","line":46,"verdict":"FP","confidence":"high","reason":"restorestack macro: L used as struct base; no precedence hazard"},
{"rule":"PRE02-C","file":"ldo.h","line":46,"verdict":"FP","confidence":"high","reason":"restorestack is a cast expression; outer parens unnecessary"},
{"rule":"PRE00-C","file":"lfunc.h","line":22,"verdict":"FP","confidence":"high","reason":"isintwups(L): L is always a simple lua_State* variable"},
{"rule":"PRE01-C","file":"lfunc.h","line":22,"verdict":"FP","confidence":"high","reason":"L used as struct base in member access; no precedence issue"},
{"rule":"PRE12-C","file":"lfunc.h","line":22,"verdict":"FP","confidence":"high","reason":"L is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lfunc.h","line":32,"verdict":"FP","confidence":"high","reason":"upisopen(up): up is always a simple UpVal* variable"},
{"rule":"PRE12-C","file":"lfunc.h","line":32,"verdict":"FP","confidence":"high","reason":"up is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lfunc.h","line":35,"verdict":"FP","confidence":"high","reason":"uplevel(up): up is always a simple UpVal* variable"},
{"rule":"PRE12-C","file":"lfunc.h","line":35,"verdict":"FP","confidence":"high","reason":"up is always a simple variable at call sites"},
{"rule":"ARR02-C","file":"linit.c","line":28,"verdict":"FP","confidence":"high","reason":"stdlibs[] implicit size is intentional; size maintained by initializer list"},
{"rule":"API00-C","file":"linit.c","line":46,"verdict":"FP","confidence":"high","reason":"L is a public Lua API parameter; internal Lua functions never validate L for NULL"},
{"rule":"DCL15-C","file":"linit.c","line":46,"verdict":"FP","confidence":"high","reason":"luaL_openselectedlibs is declared in lualib.h as LUALIB_API; it is the public API"},
{"rule":"INT13-C","file":"linit.c","line":51,"verdict":"FP","confidence":"high","reason":"mask starts at 1 and shifts left 10 times max; well within int range, no UB"},
{"rule":"INT13-C","file":"linit.c","line":55,"verdict":"FP","confidence":"high","reason":"mask & preload: both values well within positive int range; no UB"},
{"rule":"INT13-C","file":"linit.c","line":60,"verdict":"FP","confidence":"high","reason":"mask >> 1 on positive int value; well-defined since mask never reaches sign bit"},
{"rule":"PRE06-C","file":"ljumptab.h","line":1,"verdict":"FP","confidence":"high","reason":"ljumptab.h is intentionally designed for repeated inclusion with #undef guards"},
{"rule":"PRE01-C","file":"ljumptab.h","line":12,"verdict":"FP","confidence":"high","reason":"vmdispatch(x): x is always an opcode expression; no precedence issue with goto"},
{"rule":"PRE11-C","file":"ljumptab.h","line":12,"verdict":"FP","confidence":"high","reason":"vmdispatch ends in semicolon intentionally as dispatch point in threaded code"},
{"rule":"PRE05-C","file":"ljumptab.h","line":14,"verdict":"FP","confidence":"high","reason":"vmcase ## concatenation is correct usage; labels are formed intentionally"},
{"rule":"PRE10-C","file":"ljumptab.h","line":16,"verdict":"FP","confidence":"high","reason":"vmbreak used as a standalone statement in the VM loop; do-while not needed"},
{"rule":"PRE11-C","file":"ljumptab.h","line":16,"verdict":"FP","confidence":"high","reason":"vmbreak semicolons intentional in threaded dispatch macro design"},
{"rule":"DCL13-C","file":"llex.h","line":85,"verdict":"FP","confidence":"high","reason":"source TString* is an internal Lua string; const not applicable to TString* here"},
{"rule":"API05-C","file":"llex.h","line":86,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"},
{"rule":"PRE00-C","file":"lmem.h","line":31,"verdict":"FP","confidence":"high","reason":"luaM_testsize(n,e): n and e are always simple vars or constants at call sites"},
{"rule":"PRE12-C","file":"lmem.h","line":31,"verdict":"FP","confidence":"high","reason":"n is always a simple variable; no side-effecting arg"},
{"rule":"PRE00-C","file":"lmem.h","line":44,"verdict":"FP","confidence":"high","reason":"luaM_limitN(n,t): n and t are always simple expressions"},
{"rule":"PRE12-C","file":"lmem.h","line":44,"verdict":"FP","confidence":"high","reason":"n is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lmem.h","line":56,"verdict":"FP","confidence":"high","reason":"luaM_free(L,b): L and b are always simple vars"},
{"rule":"PRE12-C","file":"lmem.h","line":56,"verdict":"FP","confidence":"high","reason":"b is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lmem.h","line":57,"verdict":"FP","confidence":"high","reason":"luaM_freearray(L,b,n): all params are simple vars at call sites"},
{"rule":"PRE12-C","file":"lmem.h","line":57,"verdict":"FP","confidence":"high","reason":"b is always a simple variable; no side-effecting arg"},
{"rule":"PRE00-C","file":"lmem.h","line":59,"verdict":"FP","confidence":"high","reason":"luaM_new(L,t): t is always a type name (sizeof arg), never side-effecting"},
{"rule":"PRE01-C","file":"lmem.h","line":59,"verdict":"FP","confidence":"high","reason":"t is a type used in sizeof; no operator precedence issue"},
{"rule":"PRE12-C","file":"lmem.h","line":59,"verdict":"FP","confidence":"high","reason":"t is a type name in sizeof, not a runtime expression"},
{"rule":"PRE00-C","file":"lmem.h","line":60,"verdict":"FP","confidence":"high","reason":"luaM_newvector: t is a type name, n is a simple variable"},
{"rule":"PRE01-C","file":"lmem.h","line":60,"verdict":"FP","confidence":"high","reason":"t used in sizeof; no precedence issue"},
{"rule":"PRE12-C","file":"lmem.h","line":60,"verdict":"FP","confidence":"high","reason":"t is a type name; n is a simple variable at call sites"},
{"rule":"PRE00-C","file":"lmem.h","line":62,"verdict":"FP","confidence":"high","reason":"luaM_newvectorchecked: L is a simple var; t is a type; n is a simple var"},
{"rule":"PRE12-C","file":"lmem.h","line":62,"verdict":"FP","confidence":"high","reason":"L is always a simple variable; no side-effecting arg"},
{"rule":"PRE00-C","file":"lmem.h","line":69,"verdict":"FP","confidence":"high","reason":"luaM_growvector: all params are simple vars or constants at call sites"},
{"rule":"PRE01-C","file":"lmem.h","line":69,"verdict":"FP","confidence":"high","reason":"t is a type name in sizeof; no precedence issue"},
{"rule":"PRE12-C","file":"lmem.h","line":69,"verdict":"FP","confidence":"high","reason":"v is always a simple variable; no side-effecting arg"},
{"rule":"PRE00-C","file":"lmem.h","line":73,"verdict":"FP","confidence":"high","reason":"luaM_reallocvector: all params simple vars or type names"},
{"rule":"PRE01-C","file":"lmem.h","line":73,"verdict":"FP","confidence":"high","reason":"t is a type name; no precedence issue"},
{"rule":"PRE12-C","file":"lmem.h","line":73,"verdict":"FP","confidence":"high","reason":"t is a type name; v and n are simple variables"},
{"rule":"PRE00-C","file":"lmem.h","line":77,"verdict":"FP","confidence":"high","reason":"luaM_shrinkvector: all params simple vars or type names"},
{"rule":"PRE01-C","file":"lmem.h","line":77,"verdict":"FP","confidence":"high","reason":"t is a type name; no precedence issue"},
{"rule":"PRE12-C","file":"lmem.h","line":77,"verdict":"FP","confidence":"high","reason":"t is a type name; v is a simple variable at call sites"},
{"rule":"API05-C","file":"lmem.h","line":83,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"},
{"rule":"API05-C","file":"lmem.h","line":85,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"},
{"rule":"API05-C","file":"lmem.h","line":87,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"},
{"rule":"DCL15-C","file":"lopcodes.c","line":22,"verdict":"FP","confidence":"high","reason":"luaP_opmodes declared LUAI_DDEF; used externally via lopcodes.h LUAI_DDEC"},
{"rule":"DCL19-C","file":"lopcodes.c","line":22,"verdict":"FP","confidence":"high","reason":"luaP_opmodes is a module-level table intentionally at file scope"},
{"rule":"PRE01-C","file":"lopcodes.c","line":112,"verdict":"FP","confidence":"high","reason":"testITMode(m): m is always a simple OpCode value; no precedence issue"},
{"rule":"PRE06-C","file":"lopnames.h","line":1,"verdict":"FP","confidence":"high","reason":"lopnames.h has proper #ifndef/#define/#endif include guard"},
{"rule":"ARR02-C","file":"lopnames.h","line":15,"verdict":"FP","confidence":"high","reason":"opnames[] NULL-terminated implicit-size array is intentional Lua pattern"},
{"rule":"DCL37-C","file":"lprefix.h","line":17,"verdict":"FP","confidence":"high","reason":"_XOPEN_SOURCE is a POSIX feature-test macro; defining it before system headers is the prescribed way to enable POSIX APIs"},
{"rule":"DCL37-C","file":"lprefix.h","line":26,"verdict":"FP","confidence":"high","reason":"_LARGEFILE_SOURCE is a POSIX feature-test macro; defining it is the prescribed way to enable large-file support"},
{"rule":"DCL37-C","file":"lprefix.h","line":27,"verdict":"FP","confidence":"high","reason":"_FILE_OFFSET_BITS is a POSIX feature-test macro; defining it is the prescribed way to enable 64-bit off_t"},
{"rule":"DCL37-C","file":"lprefix.h","line":39,"verdict":"FP","confidence":"high","reason":"_CRT_SECURE_NO_WARNINGS is a MSVC-specific define; intentional platform adaptation"},
{"rule":"PRE00-C","file":"lstring.h","line":41,"verdict":"FP","confidence":"high","reason":"luaS_newliteral(L,s): s is always a string literal; no side-effecting arg"},
{"rule":"PRE12-C","file":"lstring.h","line":41,"verdict":"FP","confidence":"high","reason":"s is always a string literal at call sites; sizeof(s) is compile-time constant"},
{"rule":"PRE00-C","file":"lstring.h","line":48,"verdict":"FP","confidence":"high","reason":"isreserved(s): s is always a simple TString* variable"},
{"rule":"PRE12-C","file":"lstring.h","line":48,"verdict":"FP","confidence":"high","reason":"s is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lstring.h","line":54,"verdict":"FP","confidence":"high","reason":"eqshrstr(a,b): a and b are always simple TString* variables"},
{"rule":"PRE02-C","file":"lstring.h","line":54,"verdict":"FP","confidence":"high","reason":"eqshrstr expands to a single comma-expression; no precedence issue"},
{"rule":"PRE12-C","file":"lstring.h","line":54,"verdict":"FP","confidence":"high","reason":"a is always a simple variable; b is always a simple variable"},
{"rule":"API05-C","file":"lstring.h","line":65,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"},
{"rule":"API05-C","file":"lstring.h","line":69,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"},
{"rule":"API05-C","file":"lstring.h","line":69,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"},
{"rule":"PRE02-C","file":"ltm.h","line":54,"verdict":"FP","confidence":"high","reason":"maskflags is a parenthesized cast expression; outer parens not needed"},
{"rule":"PRE00-C","file":"ltm.h","line":63,"verdict":"FP","confidence":"high","reason":"checknoTM(mt,e): both params are simple variables at call sites"},
{"rule":"PRE12-C","file":"ltm.h","line":63,"verdict":"FP","confidence":"high","reason":"mt is always a simple pointer variable at call sites"},
{"rule":"PRE00-C","file":"ltm.h","line":65,"verdict":"FP","confidence":"high","reason":"gfasttm(g,mt,e): all params are simple vars at call sites"},
{"rule":"PRE01-C","file":"ltm.h","line":65,"verdict":"FP","confidence":"high","reason":"e is a TMS enum value; no operator precedence hazard"},
{"rule":"PRE12-C","file":"ltm.h","line":65,"verdict":"FP","confidence":"high","reason":"mt is always a simple variable; no side-effecting arg"},
{"rule":"PRE02-C","file":"ltm.h","line":70,"verdict":"FP","confidence":"high","reason":"ttypename expands to array subscript; outer parens not needed"},
{"rule":"DCL31-C","file":"ltm.h","line":72,"verdict":"FP","confidence":"high","reason":"LUAI_DDEC macro wraps a complete typed declaration; explicit type present inside"},
{"rule":"PRE02-C","file":"lundump.h","line":20,"verdict":"FP","confidence":"high","reason":"LUAC_INT -0x5678 is a simple negative integer literal; outer parens not needed"},
{"rule":"PRE00-C","file":"lvm.h","line":51,"verdict":"FP","confidence":"high","reason":"tonumber(o,n): o and n are always simple variables at call sites"},
{"rule":"PRE12-C","file":"lvm.h","line":51,"verdict":"FP","confidence":"high","reason":"o is always a simple variable; no side-effecting arg"},
{"rule":"PRE00-C","file":"lvm.h","line":56,"verdict":"FP","confidence":"high","reason":"tonumberns(o,n): o and n are always simple variables at call sites"},
{"rule":"PRE12-C","file":"lvm.h","line":56,"verdict":"FP","confidence":"high","reason":"o is always a simple variable; no side-effecting arg"},
{"rule":"API03-C","file":"lvm.h","line":62,"verdict":"FP","confidence":"high","reason":"tointeger is a conversion macro; parameter naming reflects output-pointer convention"},
{"rule":"PRE00-C","file":"lvm.h","line":62,"verdict":"FP","confidence":"high","reason":"tointeger(o,i): o and i are always simple variables at call sites"},
{"rule":"PRE12-C","file":"lvm.h","line":62,"verdict":"FP","confidence":"high","reason":"o is always a simple variable; no side-effecting arg"},
{"rule":"API03-C","file":"lvm.h","line":68,"verdict":"FP","confidence":"high","reason":"tointegerns follows same consistent output-pointer convention as tointeger"},
{"rule":"PRE00-C","file":"lvm.h","line":68,"verdict":"FP","confidence":"high","reason":"tointegerns(o,i): o and i are always simple variables at call sites"},
{"rule":"PRE12-C","file":"lvm.h","line":68,"verdict":"FP","confidence":"high","reason":"o is always a simple variable; no side-effecting arg"},
{"rule":"PRE01-C","file":"lvm.h","line":73,"verdict":"FP","confidence":"high","reason":"intop(op,...): op is an operator token, not a runtime expression; no precedence issue"},
{"rule":"PRE00-C","file":"lvm.h","line":81,"verdict":"FP","confidence":"high","reason":"luaV_fastget: t, k, res, f, tag are always simple vars at call sites"},
{"rule":"PRE01-C","file":"lvm.h","line":81,"verdict":"FP","confidence":"high","reason":"f is a function pointer; used as function call, no precedence hazard"},
{"rule":"PRE01-C","file":"lvm.h","line":81,"verdict":"FP","confidence":"high","reason":"tag is always a simple variable; no precedence hazard"},
{"rule":"PRE12-C","file":"lvm.h","line":81,"verdict":"FP","confidence":"high","reason":"t is always a simple variable; no side-effecting arg"},
{"rule":"PRE00-C","file":"lvm.h","line":89,"verdict":"FP","confidence":"high","reason":"luaV_fastgeti: t, k, res, tag are always simple variables at call sites"},
{"rule":"PRE01-C","file":"lvm.h","line":89,"verdict":"FP","confidence":"high","reason":"tag is always a simple variable; no precedence issue"},
{"rule":"PRE10-C","file":"lvm.h","line":89,"verdict":"FP","confidence":"high","reason":"luaV_fastgeti used in compound-statement contexts in VM loop"},
{"rule":"PRE12-C","file":"lvm.h","line":89,"verdict":"FP","confidence":"high","reason":"t is always a simple variable; no side-effecting arg"},
{"rule":"PRE00-C","file":"lvm.h","line":94,"verdict":"FP","confidence":"high","reason":"luaV_fastset: all params are simple vars at call sites"},
{"rule":"PRE01-C","file":"lvm.h","line":94,"verdict":"FP","confidence":"high","reason":"hres is a simple variable; no precedence hazard"},
{"rule":"PRE01-C","file":"lvm.h","line":94,"verdict":"FP","confidence":"high","reason":"f is a function pointer used as call; no precedence issue"},
{"rule":"PRE12-C","file":"lvm.h","line":94,"verdict":"FP","confidence":"high","reason":"t is always a simple variable; no side-effecting arg"},
{"rule":"PRE00-C","file":"lvm.h","line":97,"verdict":"FP","confidence":"high","reason":"luaV_fastseti: all params are simple vars at call sites"},
{"rule":"PRE01-C","file":"lvm.h","line":97,"verdict":"FP","confidence":"high","reason":"hres is a simple variable; no precedence hazard"},
{"rule":"PRE10-C","file":"lvm.h","line":97,"verdict":"FP","confidence":"high","reason":"luaV_fastseti used in compound-statement contexts in VM loop"},
{"rule":"PRE12-C","file":"lvm.h","line":97,"verdict":"FP","confidence":"high","reason":"t is always a simple variable; no side-effecting arg"},
{"rule":"API00-C","file":"lzio.c","line":39,"verdict":"FP","confidence":"high","reason":"L is an internal Lua API parameter; Lua never validates L for NULL at API boundary"},
{"rule":"API00-C","file":"lzio.c","line":39,"verdict":"FP","confidence":"high","reason":"z is an internal ZIO struct; always valid at call sites from Lua core"},
{"rule":"DCL13-C","file":"lzio.c","line":39,"verdict":"FP","confidence":"high","reason":"L is lua_State*; const not applicable to lua_State in Lua API convention"},
{"rule":"DCL13-C","file":"lzio.c","line":39,"verdict":"FP","confidence":"high","reason":"data is stored in z->data and may be used mutably later; const not applicable"},
{"rule":"API00-C","file":"lzio.c","line":63,"verdict":"FP","confidence":"high","reason":"z and b are internal Lua core pointers; always valid at call sites"},
{"rule":"API00-C","file":"lzio.c","line":63,"verdict":"FP","confidence":"high","reason":"b is an output buffer; always valid at call sites from Lua core"},
{"rule":"API00-C","file":"lzio.c","line":63,"verdict":"FP","confidence":"high","reason":"n is size_t; overflow check on unsigned arithmetic is inapplicable"},
{"rule":"API05-C","file":"lzio.c","line":63,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"},
{"rule":"EXP20-C","file":"lzio.c","line":66,"verdict":"FP","confidence":"high","reason":"checkbuffer returns 0 (fail) or 1 (success); boolean test is idiomatic C"},
{"rule":"EXP20-C","file":"lzio.c","line":81,"verdict":"FP","confidence":"high","reason":"checkbuffer returns 0/1; boolean test is idiomatic and unambiguous"},
{"rule":"DCL30-C","file":"lzio.c","line":88,"verdict":"FP","confidence":"high","reason":"res holds z->p value (pointer into ZIO buffer), not address of local; no dangling pointer"},
{"rule":"PRE00-C","file":"lzio.h","line":20,"verdict":"FP","confidence":"high","reason":"zgetc(z): z is always a simple ZIO* variable at call sites"},
{"rule":"PRE12-C","file":"lzio.h","line":20,"verdict":"FP","confidence":"high","reason":"z is always a simple variable; no side-effecting arg at call sites"},
{"rule":"PRE00-C","file":"lzio.h","line":29,"verdict":"FP","confidence":"high","reason":"luaZ_initbuffer(L,buff): both params are simple vars at call sites"},
{"rule":"PRE12-C","file":"lzio.h","line":29,"verdict":"FP","confidence":"high","reason":"buff is always a simple variable at call sites"},
{"rule":"PRE00-C","file":"lzio.h","line":39,"verdict":"FP","confidence":"high","reason":"luaZ_resizebuffer(L,buff,size): all params are simple vars at call sites"},
{"rule":"PRE12-C","file":"lzio.h","line":39,"verdict":"FP","confidence":"high","reason":"buff is always a simple variable at call sites"},
{"rule":"API05-C","file":"lzio.h","line":49,"verdict":"FP","confidence":"high","reason":"Lua does not use C99 conformant array parameter syntax; advisory inapplicable"}
],
"fns": [],
"files_reviewed": [
"lualib.h",
"lapi.h",
"lcode.h",
"lctype.c",
"lctype.h",
"ldebug.h",
"ldo.h",
"lfunc.h",
"linit.c",
"ljumptab.h",
"llex.h",
"lmem.h",
"lopcodes.c",
"lopnames.h",
"lprefix.h",
"lstring.h",
"ltm.h",
"lundump.h",
"lvm.h",
"lzio.c",
"lzio.h"
],
"files_clean": [
"lualib.h",
"lapi.h",
"lcode.h",
"lctype.c",
"lctype.h",
"ldebug.h",
"ldo.h",
"lfunc.h",
"linit.c",
"ljumptab.h",
"llex.h",
"lmem.h",
"lopcodes.c",
"lopnames.h",
"lprefix.h",
"lstring.h",
"ltm.h",
"lundump.h",
"lvm.h",
"lzio.c",
"lzio.h"
],
"summary": {
"ground_truth": 0,
"tp": 0,
"fp": 173,
"fn": 0
}
}