Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
xpadl_alloc should really be pointer to a struct with a flexible array member, but flexible array members aren't portable enough among CCs. While debugging the padlist API for memory corruption (caused by an unrelated XS module), I saw that the pointer in the first slice of xpadl_alloc pointed to an AV head of gibberish but 2nd slice was fine. This was confusing and led me to belive the memory corruption was a bad write to the array in xpadl_alloc. PadlistARRAY's POD a couple pages down mentions that index 0 is not an AV *, but the struct comments just said "pointer to beginning of array of AVs " and didnt mention index 0. Fix the comments to make it clear what xpadl_alloc is. Add a union so it is easier to analyze a crash dump/breakpoint with a C debugger, without writing new code "PADNAMELIST * pnl = PadlistNAMES(pl);" in many places and recompiling the interp with -O0, just to be able to inspect the padnamelist struct.
- Loading branch information