{
"ground_truth": [],
"labels": [
{"rule":"PRE00-C","file":"ldebug.c","line":34,"verdict":"FP","confidence":"high","reason":"LuaClosure macro: parameter 'f' appears once in expansion; no multiple-eval with side effects"},
{"rule":"PRE12-C","file":"ldebug.c","line":34,"verdict":"FP","confidence":"high","reason":"LuaClosure(f): single parameter reference; no side-effecting call sites observed"},
{"rule":"API00-C","file":"ldebug.c","line":85,"verdict":"FP","confidence":"high","reason":"luaG_getfuncline: internal API; callers guarantee valid proto/pc; null-L check inapplicable"},
{"rule":"API00-C","file":"ldebug.c","line":133,"verdict":"FP","confidence":"high","reason":"lua_sethook: L is lua_State from Lua API; API contract requires non-NULL; null check is non-idiom"},
{"rule":"DCL15-C","file":"ldebug.c","line":133,"verdict":"FP","confidence":"high","reason":"LUA_API functions are part of the public API exported via lua.h; must have external linkage"},
{"rule":"API00-C","file":"ldebug.c","line":147,"verdict":"FP","confidence":"high","reason":"lua_gethook: public Lua API; L non-null by contract; internal null check not warranted"},
{"rule":"DCL15-C","file":"ldebug.c","line":147,"verdict":"FP","confidence":"high","reason":"LUA_API public function; cannot be static"},
{"rule":"DCL13-C","file":"ldebug.c","line":147,"verdict":"FP","confidence":"high","reason":"lua_gethook modifies L->hook indirectly via reading; const on lua_State* is not idiomatic Lua API"},
{"rule":"API00-C","file":"ldebug.c","line":152,"verdict":"FP","confidence":"high","reason":"lua_gethookmask: public API; L non-null by contract"},
{"rule":"DCL15-C","file":"ldebug.c","line":152,"verdict":"FP","confidence":"high","reason":"LUA_API public function; external linkage required"},
{"rule":"DCL13-C","file":"ldebug.c","line":152,"verdict":"FP","confidence":"high","reason":"lua_gethookmask: L not const-qualifiable in Lua API convention"},
{"rule":"API00-C","file":"ldebug.c","line":157,"verdict":"FP","confidence":"high","reason":"lua_gethookcount: public API; L non-null by contract"},
{"rule":"DCL15-C","file":"ldebug.c","line":157,"verdict":"FP","confidence":"high","reason":"LUA_API public function; must have external linkage"},
{"rule":"DCL13-C","file":"ldebug.c","line":157,"verdict":"FP","confidence":"high","reason":"L not const-qualifiable per Lua API convention"},
{"rule":"API00-C","file":"ldebug.c","line":162,"verdict":"FP","confidence":"high","reason":"lua_getstack: public API; L/ar non-null by API contract"},
{"rule":"API00-C","file":"ldebug.c","line":162,"verdict":"FP","confidence":"high","reason":"lua_getstack: ar non-null by API contract"},
{"rule":"DCL15-C","file":"ldebug.c","line":162,"verdict":"FP","confidence":"high","reason":"LUA_API public function; external linkage required"},
{"rule":"DCL13-C","file":"ldebug.c","line":186,"verdict":"FP","confidence":"high","reason":"findvararg: ci is modified via dereference; const qualifier inappropriate"},
{"rule":"API00-C","file":"ldebug.c","line":198,"verdict":"FP","confidence":"high","reason":"luaG_findlocal: internal API; L/ci guaranteed non-null by internal callers"},
{"rule":"API00-C","file":"ldebug.c","line":198,"verdict":"FP","confidence":"high","reason":"luaG_findlocal: ci guaranteed non-null by all callers"},
{"rule":"DCL13-C","file":"ldebug.c","line":198,"verdict":"FP","confidence":"high","reason":"L not const-qualifiable in Lua internal API convention"},
{"rule":"API00-C","file":"ldebug.c","line":222,"verdict":"FP","confidence":"high","reason":"lua_getlocal: public API; L non-null by contract"},
{"rule":"API00-C","file":"ldebug.c","line":222,"verdict":"FP","confidence":"high","reason":"lua_getlocal: n is small integer; no overflow risk in usage"},
{"rule":"MEM10-C","file":"ldebug.c","line":225,"verdict":"FP","confidence":"high","reason":"Standard null-check for optional parameter; MEM10-C advisory not applicable to Lua internal idiom"},
{"rule":"DCL30-C","file":"ldebug.c","line":240,"verdict":"FP","confidence":"high","reason":"Returns local pointer 'name' which points to string literals or GC strings, not stack-allocated char array"},
{"rule":"API00-C","file":"ldebug.c","line":244,"verdict":"FP","confidence":"high","reason":"lua_setlocal: public API; L non-null by contract"},
{"rule":"API00-C","file":"ldebug.c","line":244,"verdict":"FP","confidence":"high","reason":"lua_setlocal: ar non-null by public API contract"},
{"rule":"API00-C","file":"ldebug.c","line":244,"verdict":"FP","confidence":"high","reason":"lua_setlocal: n is small integer; no overflow risk"},
{"rule":"DCL30-C","file":"ldebug.c","line":255,"verdict":"FP","confidence":"high","reason":"Returns 'name' pointer to GC string or literal, not address of stack-allocated buffer"},
{"rule":"ARR00-C","file":"ldebug.c","line":285,"verdict":"FP","confidence":"high","reason":"nextline: pc is bounded by sizelineinfo; caller (collectvalidlines) iterates i < p->sizelineinfo"},
{"rule":"ARR00-C","file":"ldebug.c","line":286,"verdict":"FP","confidence":"high","reason":"nextline: same as above; pc within sizelineinfo bounds at all call sites"},
{"rule":"MEM31-C","file":"ldebug.c","line":300,"verdict":"FP","confidence":"high","reason":"luaH_new result pushed onto Lua stack immediately (sethvalue2s); GC-managed, not heap-freed"},
{"rule":"DCL13-C","file":"ldebug.c","line":323,"verdict":"FP","confidence":"high","reason":"getfuncname: ci parameter modified via ci->previous read; const not appropriate"},
{"rule":"EXP33-C","file":"ldebug.c","line":326,"verdict":"FP","confidence":"high","reason":"funcnamefromcall is a forward-declared static function visible in same TU; not 'uninitialized'"},
{"rule":"CON43-C","file":"ldebug.c","line":335,"verdict":"FP","confidence":"high","reason":"auxgetinfo is single-threaded; switch on *what is sequential string iteration; no concurrency double-fetch"},
{"rule":"API00-C","file":"ldebug.c","line":395,"verdict":"FP","confidence":"high","reason":"lua_getinfo: public API; L non-null by API contract"},
{"rule":"API00-C","file":"ldebug.c","line":395,"verdict":"FP","confidence":"high","reason":"lua_getinfo: what is const string; non-null by API contract"},
{"rule":"API00-C","file":"ldebug.c","line":395,"verdict":"FP","confidence":"high","reason":"lua_getinfo: ar non-null by API contract"},
{"rule":"DCL15-C","file":"ldebug.c","line":395,"verdict":"FP","confidence":"high","reason":"LUA_API public function; external linkage required"},
{"rule":"ARR00-C","file":"ldebug.c","line":447,"verdict":"FP","confidence":"high","reason":"findsetreg: lastpc bounded to valid code range by all callers; compiler-emitted bytecode"},
{"rule":"STR34-C","file":"ldebug.c","line":495,"verdict":"FP","confidence":"high","reason":"*name = getstr(...): assigning const char* pointer to pointer slot, not reading char into integer; no sign extension"},
{"rule":"STR34-C","file":"ldebug.c","line":495,"verdict":"FP","confidence":"high","reason":"Duplicate of above; same false positive on pointer assignment misread as char read"},
{"rule":"STR34-C","file":"ldebug.c","line":499,"verdict":"FP","confidence":"high","reason":"*name = \"?\": assigning string literal pointer; not a char-to-integer conversion"},
{"rule":"STR34-C","file":"ldebug.c","line":499,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"STR34-C","file":"ldebug.c","line":508,"verdict":"FP","confidence":"high","reason":"*name = luaF_getlocalname(...): assigning const char* pointer; no char sign-extension"},
{"rule":"STR34-C","file":"ldebug.c","line":508,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"EXP30-C","file":"ldebug.c","line":512,"verdict":"FP","confidence":"high","reason":"*ppc = pc = findsetreg(...): chained assignment to different objects; well-defined in C99"},
{"rule":"STR34-C","file":"ldebug.c","line":524,"verdict":"FP","confidence":"high","reason":"*name = upvalname(...): assigning const char* pointer; no char sign extension issue"},
{"rule":"STR34-C","file":"ldebug.c","line":524,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"STR34-C","file":"ldebug.c","line":542,"verdict":"FP","confidence":"high","reason":"*name = \"?\": pointer assignment, not char read into integer"},
{"rule":"STR34-C","file":"ldebug.c","line":542,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"EXP33-C","file":"ldebug.c","line":562,"verdict":"FP","confidence":"high","reason":"name: initialized NULL at line 559; explicitly set before use or checked with 'name &&'"},
{"rule":"DCL30-C","file":"ldebug.c","line":573,"verdict":"FP","confidence":"high","reason":"Returns 'kind' which is a string literal pointer, not address of stack-allocated buffer"},
{"rule":"STR34-C","file":"ldebug.c","line":589,"verdict":"FP","confidence":"high","reason":"*name = \"integer index\": pointer assignment to string literal; no char sign extension"},
{"rule":"STR34-C","file":"ldebug.c","line":589,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"STR34-C","file":"ldebug.c","line":624,"verdict":"FP","confidence":"high","reason":"*name = \"for iterator\": pointer assignment; no char sign extension"},
{"rule":"STR34-C","file":"ldebug.c","line":624,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"STR34-C","file":"ldebug.c","line":651,"verdict":"FP","confidence":"high","reason":"*name = getshrstr(...)+2: const char* pointer assignment; no sign extension"},
{"rule":"STR34-C","file":"ldebug.c","line":651,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"STR34-C","file":"ldebug.c","line":662,"verdict":"FP","confidence":"high","reason":"*name = \"?\": pointer assignment to literal; no sign extension issue"},
{"rule":"STR34-C","file":"ldebug.c","line":662,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"STR34-C","file":"ldebug.c","line":666,"verdict":"FP","confidence":"high","reason":"*name = \"__gc\": pointer assignment to literal; no sign extension issue"},
{"rule":"STR34-C","file":"ldebug.c","line":666,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"DCL13-C","file":"ldebug.c","line":685,"verdict":"FP","confidence":"high","reason":"instack: ci read for func.p and top.p; const on struct-with-pointers not practical in Lua"},
{"rule":"DCL00-C","file":"ldebug.c","line":703,"verdict":"FP","confidence":"high","reason":"Variable c used in for-loop controlling execution; advisory only; Lua does not enforce const here"},
{"rule":"STR34-C","file":"ldebug.c","line":707,"verdict":"FP","confidence":"high","reason":"*name = upvalname(...): const char* pointer assignment; no char sign extension"},
{"rule":"STR34-C","file":"ldebug.c","line":707,"verdict":"FP","confidence":"high","reason":"Duplicate of above"},
{"rule":"MEM10-C","file":"ldebug.c","line":717,"verdict":"FP","confidence":"high","reason":"Standard null-check idiom; MEM10-C advisory not applicable"},
{"rule":"EXP34-C","file":"ldebug.c","line":739,"verdict":"FP","confidence":"high","reason":"formatvarinfo checks kind==NULL first; if kind non-NULL, name set by caller before this call"},
{"rule":"MSC04-C","file":"ldebug.c","line":746,"verdict":"FP","confidence":"high","reason":"Recursion through error handling is intentional Lua design; longjmp unwinds before actual cycle"},
{"rule":"MSC37-C","file":"ldebug.c","line":746,"verdict":"FP","confidence":"high","reason":"typeerror declared l_noret (__attribute__((noreturn))); compiler knows it never returns"},
{"rule":"API00-C","file":"ldebug.c","line":757,"verdict":"FP","confidence":"high","reason":"luaG_typeerror: internal API; L/o non-null by contract"},
{"rule":"API00-C","file":"ldebug.c","line":757,"verdict":"FP","confidence":"high","reason":"luaG_typeerror: o non-null by internal contract"},
{"rule":"API00-C","file":"ldebug.c","line":757,"verdict":"FP","confidence":"high","reason":"luaG_typeerror: op is string literal or internal string; non-null"},
{"rule":"MSC04-C","file":"ldebug.c","line":757,"verdict":"FP","confidence":"high","reason":"Indirect recursion through error-handler is Lua's intentional error propagation design"},
{"rule":"MSC37-C","file":"ldebug.c","line":757,"verdict":"FP","confidence":"high","reason":"luaG_typeerror declared l_noret; noreturn attribute; always terminates via longjmp"},
{"rule":"API00-C","file":"ldebug.c","line":767,"verdict":"FP","confidence":"high","reason":"luaG_callerror: internal API; L/o non-null by contract"},
{"rule":"API00-C","file":"ldebug.c","line":767,"verdict":"FP","confidence":"high","reason":"luaG_callerror: o non-null by internal contract"},
{"rule":"MSC04-C","file":"ldebug.c","line":767,"verdict":"FP","confidence":"high","reason":"Error recursion is Lua's intentional design; longjmp prevents actual infinite recursion"},
{"rule":"MSC37-C","file":"ldebug.c","line":767,"verdict":"FP","confidence":"high","reason":"luaG_callerror declared l_noret; always terminates"},
{"rule":"EXP33-C","file":"ldebug.c","line":770,"verdict":"FP","confidence":"high","reason":"funcnamefromcall is a forward-declared static function defined earlier in same TU; not uninitialized"},
{"rule":"EXP34-C","file":"ldebug.c","line":771,"verdict":"FP","confidence":"high","reason":"name set to NULL but kind checked first; formatvarinfo only called when kind!=NULL; at that point funcnamefromcall has set *name"},
{"rule":"API00-C","file":"ldebug.c","line":776,"verdict":"FP","confidence":"high","reason":"luaG_forerror: internal API; L/o/what non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":776,"verdict":"FP","confidence":"high","reason":"luaG_forerror: o non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":776,"verdict":"FP","confidence":"high","reason":"luaG_forerror: what is string literal from VM; non-null"},
{"rule":"MSC04-C","file":"ldebug.c","line":776,"verdict":"FP","confidence":"high","reason":"Error recursion is intentional Lua design; longjmp breaks cycles"},
{"rule":"MSC37-C","file":"ldebug.c","line":776,"verdict":"FP","confidence":"high","reason":"luaG_forerror declared l_noret; always terminates via longjmp"},
{"rule":"API00-C","file":"ldebug.c","line":782,"verdict":"FP","confidence":"high","reason":"luaG_concaterror: internal API; L/p1 non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":782,"verdict":"FP","confidence":"high","reason":"luaG_concaterror: p1 non-null by callers"},
{"rule":"MSC04-C","file":"ldebug.c","line":782,"verdict":"FP","confidence":"high","reason":"Error recursion is intentional Lua design"},
{"rule":"MSC37-C","file":"ldebug.c","line":782,"verdict":"FP","confidence":"high","reason":"luaG_concaterror declared l_noret; always terminates"},
{"rule":"API00-C","file":"ldebug.c","line":788,"verdict":"FP","confidence":"high","reason":"luaG_opinterror: internal API; L/p2/msg non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":788,"verdict":"FP","confidence":"high","reason":"luaG_opinterror: p2 non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":788,"verdict":"FP","confidence":"high","reason":"luaG_opinterror: msg is string literal; non-null"},
{"rule":"MSC04-C","file":"ldebug.c","line":788,"verdict":"FP","confidence":"high","reason":"Error recursion is intentional Lua design"},
{"rule":"MSC37-C","file":"ldebug.c","line":788,"verdict":"FP","confidence":"high","reason":"luaG_opinterror declared l_noret; always terminates"},
{"rule":"API00-C","file":"ldebug.c","line":799,"verdict":"FP","confidence":"high","reason":"luaG_tointerror: internal API; L/p2 non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":799,"verdict":"FP","confidence":"high","reason":"luaG_tointerror: p2 non-null by callers"},
{"rule":"MSC04-C","file":"ldebug.c","line":799,"verdict":"FP","confidence":"high","reason":"Error recursion is intentional Lua design"},
{"rule":"MSC37-C","file":"ldebug.c","line":799,"verdict":"FP","confidence":"high","reason":"luaG_tointerror declared l_noret; always terminates"},
{"rule":"API00-C","file":"ldebug.c","line":807,"verdict":"FP","confidence":"high","reason":"luaG_ordererror: internal API; L/p1/p2 non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":807,"verdict":"FP","confidence":"high","reason":"luaG_ordererror: p1 non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":807,"verdict":"FP","confidence":"high","reason":"luaG_ordererror: p2 non-null by callers"},
{"rule":"MSC37-C","file":"ldebug.c","line":807,"verdict":"FP","confidence":"high","reason":"luaG_ordererror declared l_noret; always terminates"},
{"rule":"EXP34-C","file":"ldebug.c","line":810,"verdict":"FP","confidence":"high","reason":"t1/t2 from luaT_objtypename always returns non-NULL (falls back to ttypename); no null possible"},
{"rule":"EXP34-C","file":"ldebug.c","line":810,"verdict":"FP","confidence":"high","reason":"t2 same: luaT_objtypename always returns a valid string pointer"},
{"rule":"API00-C","file":"ldebug.c","line":817,"verdict":"FP","confidence":"high","reason":"luaG_errnnil: internal API; L/cl non-null by callers"},
{"rule":"API00-C","file":"ldebug.c","line":817,"verdict":"FP","confidence":"high","reason":"luaG_errnnil: cl non-null by callers"},
{"rule":"MSC04-C","file":"ldebug.c","line":817,"verdict":"FP","confidence":"high","reason":"Error recursion is intentional Lua design"},
{"rule":"MSC37-C","file":"ldebug.c","line":817,"verdict":"FP","confidence":"high","reason":"luaG_errnnil declared l_noret; always terminates"},
{"rule":"DCL13-C","file":"ldebug.c","line":817,"verdict":"FP","confidence":"high","reason":"cl parameter read for cl->p; const LClosure* not conventional in Lua API"},
{"rule":"MEM10-C","file":"ldebug.c","line":828,"verdict":"FP","confidence":"high","reason":"Null-check on optional src parameter; standard idiom for optional debug info"},
{"rule":"EXP33-C","file":"ldebug.c","line":834,"verdict":"FP","confidence":"high","reason":"idlen initialized by getlstr macro side effect on line 833; macro assigns len via cast_void"},
{"rule":"API00-C","file":"ldebug.c","line":840,"verdict":"FP","confidence":"high","reason":"luaG_errormsg: internal API; L non-null by callers"},
{"rule":"MSC04-C","file":"ldebug.c","line":840,"verdict":"FP","confidence":"high","reason":"Error recursion is intentional Lua design; longjmp breaks cycles"},
{"rule":"MSC37-C","file":"ldebug.c","line":840,"verdict":"FP","confidence":"high","reason":"luaG_errormsg declared l_noret; terminates via luaD_throw"},
{"rule":"API00-C","file":"ldebug.c","line":857,"verdict":"FP","confidence":"high","reason":"luaG_runerror: internal API; L/fmt non-null by all callers"},
{"rule":"API00-C","file":"ldebug.c","line":857,"verdict":"FP","confidence":"high","reason":"luaG_runerror: fmt is always a string literal from callers"},
{"rule":"MSC04-C","file":"ldebug.c","line":857,"verdict":"FP","confidence":"high","reason":"Error recursion is intentional Lua design"},
{"rule":"MSC37-C","file":"ldebug.c","line":857,"verdict":"FP","confidence":"high","reason":"luaG_runerror declared l_noret; always terminates"},
{"rule":"EXP33-C","file":"ldebug.c","line":862,"verdict":"FP","confidence":"high","reason":"argp initialized by va_start inside pushvfstring macro on same line 862; not uninitialized"},
{"rule":"API00-C","file":"ldebug.c","line":910,"verdict":"FP","confidence":"high","reason":"luaG_tracecall: internal API; L non-null by callers in VM"},
{"rule":"API00-C","file":"ldebug.c","line":936,"verdict":"FP","confidence":"high","reason":"luaG_traceexec: internal API; pc non-null pointer to current instruction; VM guarantees validity"},
{"rule":"PRE00-C","file":"lobject.h","line":98,"verdict":"FP","confidence":"high","reason":"righttt(obj): obj used in ttypetag(obj) and gcvalue(obj)->tt; both are struct member reads, no side effects at call sites"},
{"rule":"PRE12-C","file":"lobject.h","line":98,"verdict":"FP","confidence":"high","reason":"righttt: no side-effecting argument ever passed; assertion-only macro"},
{"rule":"PRE00-C","file":"lobject.h","line":106,"verdict":"FP","confidence":"high","reason":"checkliveness: L and obj used multiple times but only in assertion context; no side-effecting args"},
{"rule":"PRE01-C","file":"lobject.h","line":106,"verdict":"FP","confidence":"high","reason":"L appears in boolean short-circuit (L == NULL || ...) where parenthesization is correct in context"},
{"rule":"PRE12-C","file":"lobject.h","line":106,"verdict":"FP","confidence":"high","reason":"checkliveness(L,obj): L/obj are never side-effecting expressions at call sites"},
{"rule":"PRE10-C","file":"lobject.h","line":118,"verdict":"FP","confidence":"high","reason":"setobj uses {} not do-while; Lua's universal macro style; never used after bare if without braces"},
{"rule":"PRE00-C","file":"lobject.h","line":221,"verdict":"FP","confidence":"high","reason":"isnonstrictnil: ttisnil(v) and ttisstrictnil(v) both read v->tt_; no side-effecting args at call sites"},
{"rule":"PRE12-C","file":"lobject.h","line":221,"verdict":"FP","confidence":"high","reason":"isnonstrictnil: v always a simple pointer dereference at call sites; no side effects"},
{"rule":"PRE00-C","file":"lobject.h","line":259,"verdict":"FP","confidence":"high","reason":"l_isfalse: ttisfalse(o)||ttisnil(o); o is a TValue*; always simple pointer, no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":259,"verdict":"FP","confidence":"high","reason":"l_isfalse: o evaluated twice but always a simple pointer expression"},
{"rule":"PRE00-C","file":"lobject.h","line":260,"verdict":"FP","confidence":"high","reason":"tagisfalse: t evaluated twice in boolean; always an integer expression, no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":260,"verdict":"FP","confidence":"high","reason":"tagisfalse: t always a simple integer value; no side-effecting call sites"},
{"rule":"PRE00-C","file":"lobject.h","line":280,"verdict":"FP","confidence":"high","reason":"thvalue: check_exp reads o twice; both struct member reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":280,"verdict":"FP","confidence":"high","reason":"thvalue: o always a simple pointer; no side effects"},
{"rule":"PRE10-C","file":"lobject.h","line":282,"verdict":"FP","confidence":"high","reason":"setthvalue: {} style is Lua universal macro convention; not causing if-else dangling in practice"},
{"rule":"PRE10-C","file":"lobject.h","line":302,"verdict":"FP","confidence":"high","reason":"CommonHeader is a struct-member-sequence macro, not a statement macro; do-while wrapping invalid here"},
{"rule":"PRE00-C","file":"lobject.h","line":319,"verdict":"FP","confidence":"high","reason":"gcvalue: check_exp reads o twice; struct member reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":319,"verdict":"FP","confidence":"high","reason":"gcvalue: o always a simple pointer expression; no side effects"},
{"rule":"PRE10-C","file":"lobject.h","line":323,"verdict":"FP","confidence":"high","reason":"setgcovalue: {} style is Lua's universal macro convention"},
{"rule":"PRE00-C","file":"lobject.h","line":344,"verdict":"FP","confidence":"high","reason":"nvalue: o evaluated multiple times; struct reads only; no side effects at call sites"},
{"rule":"PRE12-C","file":"lobject.h","line":344,"verdict":"FP","confidence":"high","reason":"nvalue: o always simple pointer; no side-effecting expansions observed"},
{"rule":"PRE00-C","file":"lobject.h","line":346,"verdict":"FP","confidence":"high","reason":"fltvalue: o used in check_exp and val_(); struct member reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":346,"verdict":"FP","confidence":"high","reason":"fltvalue: o always simple pointer; no side effects"},
{"rule":"PRE00-C","file":"lobject.h","line":347,"verdict":"FP","confidence":"high","reason":"ivalue: o used in check_exp and val_(); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":347,"verdict":"FP","confidence":"high","reason":"ivalue: o always simple pointer; no side effects"},
{"rule":"PRE10-C","file":"lobject.h","line":352,"verdict":"FP","confidence":"high","reason":"setfltvalue: {} style is Lua universal macro convention; not a statement macro"},
{"rule":"PRE10-C","file":"lobject.h","line":355,"verdict":"FP","confidence":"high","reason":"chgfltvalue: {} style is Lua universal macro convention"},
{"rule":"PRE10-C","file":"lobject.h","line":358,"verdict":"FP","confidence":"high","reason":"setivalue: {} style is Lua universal macro convention"},
{"rule":"PRE10-C","file":"lobject.h","line":361,"verdict":"FP","confidence":"high","reason":"chgivalue: {} style is Lua universal macro convention"},
{"rule":"PRE00-C","file":"lobject.h","line":383,"verdict":"FP","confidence":"high","reason":"tsvalue: o used in check_exp and gco2ts(val_...); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":383,"verdict":"FP","confidence":"high","reason":"tsvalue: o always simple pointer; no side effects"},
{"rule":"PRE10-C","file":"lobject.h","line":385,"verdict":"FP","confidence":"high","reason":"setsvalue: {} style Lua macro convention"},
{"rule":"PRE02-C","file":"lobject.h","line":398,"verdict":"FP","confidence":"high","reason":"LSTRREG -1 used as comparison value for ls_byte field; no operator-precedence risk from omitting parens"},
{"rule":"PRE02-C","file":"lobject.h","line":399,"verdict":"FP","confidence":"high","reason":"LSTRFIX -2 same as above; negative integer constant used for comparison; no precedence issue"},
{"rule":"PRE02-C","file":"lobject.h","line":400,"verdict":"FP","confidence":"high","reason":"LSTRMEM -3 same as above; integer constant; no precedence issue"},
{"rule":"PRE00-C","file":"lobject.h","line":422,"verdict":"FP","confidence":"high","reason":"isextstr: ts evaluated twice; struct reads only; no side effects at call sites"},
{"rule":"PRE12-C","file":"lobject.h","line":422,"verdict":"FP","confidence":"high","reason":"isextstr: ts always simple pointer; no side effects"},
{"rule":"PRE00-C","file":"lobject.h","line":430,"verdict":"FP","confidence":"high","reason":"getshrstr: ts evaluated in check_exp and rawgetshrstr; struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":430,"verdict":"FP","confidence":"high","reason":"getshrstr: ts always simple pointer"},
{"rule":"PRE00-C","file":"lobject.h","line":431,"verdict":"FP","confidence":"high","reason":"getlngstr: ts evaluated in check_exp and ts->contents; struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":431,"verdict":"FP","confidence":"high","reason":"getlngstr: ts always simple pointer"},
{"rule":"PRE00-C","file":"lobject.h","line":432,"verdict":"FP","confidence":"high","reason":"getstr: ts evaluated in ternary condition and both branches; struct reads only"},
{"rule":"PRE12-C","file":"lobject.h","line":432,"verdict":"FP","confidence":"high","reason":"getstr: ts always simple pointer at call sites"},
{"rule":"PRE00-C","file":"lobject.h","line":436,"verdict":"FP","confidence":"high","reason":"tsslen: ts evaluated in ternary condition and both branches; struct reads only"},
{"rule":"PRE12-C","file":"lobject.h","line":436,"verdict":"FP","confidence":"high","reason":"tsslen: ts always simple pointer at call sites"},
{"rule":"PRE00-C","file":"lobject.h","line":441,"verdict":"FP","confidence":"high","reason":"getlstr: ts and len appear multiple times; struct reads and cast_void assignments; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":441,"verdict":"FP","confidence":"high","reason":"getlstr: ts always simple pointer; len is a plain variable"},
{"rule":"PRE00-C","file":"lobject.h","line":467,"verdict":"FP","confidence":"high","reason":"pvalue: o evaluated in check_exp and val_(); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":467,"verdict":"FP","confidence":"high","reason":"pvalue: o always simple pointer at call sites"},
{"rule":"PRE00-C","file":"lobject.h","line":468,"verdict":"FP","confidence":"high","reason":"uvalue: o evaluated in check_exp and gco2u(val_...); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":468,"verdict":"FP","confidence":"high","reason":"uvalue: o always simple pointer at call sites"},
{"rule":"PRE10-C","file":"lobject.h","line":472,"verdict":"FP","confidence":"high","reason":"setpvalue: {} style Lua macro convention"},
{"rule":"PRE10-C","file":"lobject.h","line":475,"verdict":"FP","confidence":"high","reason":"setuvalue: {} style Lua macro convention"},
{"rule":"DCL38-C","file":"lobject.h","line":498,"verdict":"FP","confidence":"high","reason":"uv[1] is C89 flexible-array idiom; intentional for struct-hack; C99 [] unavailable for compatibility"},
{"rule":"STR31-C","file":"lobject.h","line":498,"verdict":"FP","confidence":"high","reason":"uv[1] is UValue (not char array); STR31-C misidentified the member type; no string buffer issue"},
{"rule":"PRE00-C","file":"lobject.h","line":521,"verdict":"FP","confidence":"high","reason":"udatamemoffset: nuv evaluated in ternary condition and offsetof; no side-effecting args"},
{"rule":"PRE12-C","file":"lobject.h","line":521,"verdict":"FP","confidence":"high","reason":"udatamemoffset: nuv always simple integer expression at call sites"},
{"rule":"PRE00-C","file":"lobject.h","line":526,"verdict":"FP","confidence":"high","reason":"getudatamem: u evaluated in cast_charp and udatamemoffset; struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":526,"verdict":"FP","confidence":"high","reason":"getudatamem: u always simple pointer at call sites"},
{"rule":"PRE00-C","file":"lobject.h","line":649,"verdict":"FP","confidence":"high","reason":"ttisclosure: o evaluated twice in boolean; struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":649,"verdict":"FP","confidence":"high","reason":"ttisclosure: o always simple pointer at call sites"},
{"rule":"PRE00-C","file":"lobject.h","line":654,"verdict":"FP","confidence":"high","reason":"clvalue: o in check_exp and gco2cl(val_...); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":654,"verdict":"FP","confidence":"high","reason":"clvalue: o always simple pointer"},
{"rule":"PRE00-C","file":"lobject.h","line":655,"verdict":"FP","confidence":"high","reason":"clLvalue: o in check_exp and gco2lcl(val_...); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":655,"verdict":"FP","confidence":"high","reason":"clLvalue: o always simple pointer"},
{"rule":"PRE00-C","file":"lobject.h","line":656,"verdict":"FP","confidence":"high","reason":"fvalue: o in check_exp and val_().f; struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":656,"verdict":"FP","confidence":"high","reason":"fvalue: o always simple pointer"},
{"rule":"PRE00-C","file":"lobject.h","line":657,"verdict":"FP","confidence":"high","reason":"clCvalue: o in check_exp and gco2ccl(val_...); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":657,"verdict":"FP","confidence":"high","reason":"clCvalue: o always simple pointer"},
{"rule":"PRE10-C","file":"lobject.h","line":661,"verdict":"FP","confidence":"high","reason":"setclLvalue: {} style Lua macro convention"},
{"rule":"PRE10-C","file":"lobject.h","line":668,"verdict":"FP","confidence":"high","reason":"setfvalue: {} style Lua macro convention"},
{"rule":"PRE10-C","file":"lobject.h","line":671,"verdict":"FP","confidence":"high","reason":"setclCvalue: {} style Lua macro convention"},
{"rule":"PRE10-C","file":"lobject.h","line":697,"verdict":"FP","confidence":"high","reason":"ClosureHeader: struct-member-sequence macro; do-while wrapping semantically invalid"},
{"rule":"DCL38-C","file":"lobject.h","line":703,"verdict":"FP","confidence":"high","reason":"upvalue[1] struct-hack idiom for C89 compatibility; intentional"},
{"rule":"STR31-C","file":"lobject.h","line":703,"verdict":"FP","confidence":"high","reason":"upvalue[1] is TValue array, not char array; STR31-C rule mismatch"},
{"rule":"DCL38-C","file":"lobject.h","line":710,"verdict":"FP","confidence":"high","reason":"upvals[1] struct-hack idiom for C89 compatibility; intentional"},
{"rule":"STR31-C","file":"lobject.h","line":710,"verdict":"FP","confidence":"high","reason":"upvals[1] is UpVal* array, not char array; STR31-C rule mismatch"},
{"rule":"PRE00-C","file":"lobject.h","line":735,"verdict":"FP","confidence":"high","reason":"hvalue: o in check_exp and gco2t(val_...); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":735,"verdict":"FP","confidence":"high","reason":"hvalue: o always simple pointer at call sites"},
{"rule":"PRE10-C","file":"lobject.h","line":737,"verdict":"FP","confidence":"high","reason":"sethvalue: {} style Lua macro convention"},
{"rule":"PRE10-C","file":"lobject.h","line":764,"verdict":"FP","confidence":"high","reason":"setnodekey: {} style Lua macro convention"},
{"rule":"PRE10-C","file":"lobject.h","line":770,"verdict":"FP","confidence":"high","reason":"getnodekey: {} style Lua macro convention"},
{"rule":"PRE00-C","file":"lobject.h","line":806,"verdict":"FP","confidence":"high","reason":"gckeyN: n evaluated in ternary condition and gckey(n); struct reads; no side effects"},
{"rule":"PRE12-C","file":"lobject.h","line":806,"verdict":"FP","confidence":"high","reason":"gckeyN: n always simple pointer at call sites"},
{"rule":"PRE00-C","file":"lobject.h","line":825,"verdict":"FP","confidence":"high","reason":"lmod: size evaluated in check_exp assertion (debug only) and (size)-1; release: once; no side effects"},
{"rule":"PRE01-C","file":"lobject.h","line":825,"verdict":"FP","confidence":"high","reason":"lmod size appears in check_exp (size&(size-1)) and cast_uint((size)-1); already effectively parenthesized in context"},
{"rule":"PRE12-C","file":"lobject.h","line":825,"verdict":"FP","confidence":"high","reason":"lmod: size always a simple integer expression (table size); no side effects"},
{"rule":"PRE11-C","file":"lobject.h","line":838,"verdict":"FP","confidence":"high","reason":"Line 838 is pushvfstring macro definition, not LUAI_FUNC; sqc misidentified the macro; no trailing semicolon"},
{"rule":"API02-C","file":"lobject.h","line":855,"verdict":"FP","confidence":"high","reason":"luaO_tostringbuff: buffer size is a fixed internal constant (MAXNUMBER2STR); not a public API with arbitrary-size input"},
{"rule":"EXP37-C","file":"lobject.h","line":860,"verdict":"FP","confidence":"high","reason":"luaO_pushfstring variadic declaration is correct; stdarg.h included; no rule violation"},
{"rule":"API02-C","file":"lobject.h","line":861,"verdict":"FP","confidence":"high","reason":"luaO_chunkid: out buffer size is LUA_IDSIZE (fixed compile-time constant); no variable-size API concern"},
{"rule":"API05-C","file":"lobject.h","line":861,"verdict":"FP","confidence":"high","reason":"Lua is portability-C99; conformant array parameter syntax (API05-C) is ~100% FP per categorical_patterns.md"},
{"rule":"API05-C","file":"lobject.h","line":861,"verdict":"FP","confidence":"high","reason":"Same file/line second API05-C finding; Lua does not use conformant array syntax by design"}
],
"fns": [],
"files_reviewed": [
"/home/brandon/toolchain/lua/ldebug.c",
"/home/brandon/toolchain/lua/lobject.h"
],
"files_clean": [
"/home/brandon/toolchain/lua/ldebug.c",
"/home/brandon/toolchain/lua/lobject.h"
],
"summary": {
"ground_truth": 0,
"tp": 0,
"fp": 216,
"fn": 0
}
}