3f6b68cbf23162387afa204328812350f762c199
The str==/!= arm of cbinop had an N_IDENT fast-path that assumed the operand was a local: localfind returns 0 for a module-global str, so it loaded (BP)/8(BP) — saved-BP/retaddr garbage — into rt_streq. `p == sepstr` silently compared garbage (returned wrong). Mirror #148's global branch at both sub-sites (rhs/lhs): off==0 && let_islet -> LEAQ name(SB) base, load ptr/len. Distinct per-site fast-path, not a shared choke (the by-value-global-arg family #148/#150/#151 closes separately). cstage-only; the wwstage str== twin is #146 (-> #125 batch). Pin test/wcc/989_strglobeq (table-driven: const+let globals, rhs+lhs ident, ==/!=, unequal + len>1 rows; teeth-proven). Surfaced by the lib/path c3 buffer-ops gate-1 oracle.
wcc: #152 let-initializer scope — defer the binding's localfind link past its own init (both stages)
Description
No description provided
Languages
C
89.4%
Python
7.2%
Makefile
2.3%
Shell
0.8%
Assembly
0.3%