View Single Post
07-31-18, 03:16 AM   #7
MunkDev
A Scalebane Royal Guard
 
MunkDev's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2015
Posts: 431
If you're actually replacing the global ReputationFrame_Update, then it stands to reason this is the source of your taint. Your tainted function would be called in the execution path when the reputation frame is shown, then transferring that taint to UIParent's position handler.

The best you can do to ensure there are no problems with taint is to either replace the frame altogether, or use hooksecurefunc to apply your changes after the original function call.

This is how the taint would spread (secure/tainted):
ToggleCharacter("ReputationFrame", true)
-> CharacterFrame_ShowSubFrame("ReputationFrame")
--> _G["ReputationFrame"]:Show()
---> ReputationFrame_OnShow(self)
----> ReputationFrame_Update(true)
-> ShowUIPanel(CharacterFrame)
--> FramePositionDelegate_OnAttributeChanged(self, "panel-show")
---> FramePositionDelegate:ShowUIPanel(CharacterFrame, false)
----> FramePositionDelegate:SetUIPanel(...)
At this point, FramePositionDelegate taints itself by storing CharacterFrame as a key in its own table. Thus, next time FramePositionDelegate:UIParentManageFramePositions() is called in combat, the taint and the source of the taint is finally revealed.
__________________

Last edited by MunkDev : 07-31-18 at 03:38 AM.
  Reply With Quote