Commit a91ef8a
Click Casting: skip secret values when scanning Blizzard frames for status bars
FindHealthManaBars recursively walks a Blizzard frame's whole table
graph looking for HealthBar/ManaBar keys, using each visited table as a
key in a 'checked' dedupe set. Under 12.x secret values, a protected
frame/unit reference stored on the frame passes the type()=='table'
check but throws 'attempted to index a table that cannot be indexed
with secret keys' the moment it's used as that key.
The throw propagated up through registerBlizzardFrame and aborted the
RegisterBlizzardFrames loop on OnCombatEnd, so frames after the failing
one never got RegisterFrame() - click-casting silently stopped working
on Blizzard frames until reload (matches user reports of binds not
working / 'frame doesn't accept my bind').
Guard traverse() with issecretvalue() before the table is used as a
key. Health/mana bars are plain child frames, so skipping secret
subtrees loses nothing. PropagateMouseOnChildren (the sibling walker)
uses GetChildren() + IsForbidden and was already safe; the registration
validator already bails on secret protected/name values.1 parent 75b6c30 commit a91ef8a
2 files changed
Lines changed: 13 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
11 | 15 | | |
12 | 16 | | |
13 | 17 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
924 | 924 | | |
925 | 925 | | |
926 | 926 | | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
927 | 935 | | |
928 | | - | |
| 936 | + | |
929 | 937 | | |
930 | 938 | | |
931 | 939 | | |
| |||
0 commit comments