NDui

NDui

359k Downloads

[BUG] Nonstop LUA errors when doing The Ember Court scenario 6.4.0

dancoto opened this issue ยท 2 comments

commented

Doing the Revendreth Covenant Scenario "The Ember Court" is throwing the following error Nonstop, If I remove NDui temporarily, the error does not show up. Using version 6.4.0 on Windows 10.

Message: ...Modules\Skins\Blizzard\FrameXML\ObjectiveTracker.lua:146: attempt to index field 'CurrencyContainer' (a nil value)
Time: Wed Dec  2 14:46:08 2020
Count: 1
Stack: ...Modules\Skins\Blizzard\FrameXML\ObjectiveTracker.lua:146: attempt to index field 'CurrencyContainer' (a nil value)
[string "@Interface\AddOns\NDui\Modules\Skins\Blizzard\FrameXML\ObjectiveTracker.lua"]:146: in function <...Modules\Skins\Blizzard\FrameXML\ObjectiveTracker.lua:138>
[string "=[C]"]: in function `Update'
[string "@Interface\AddOns\Blizzard_ObjectiveTracker\Blizzard_ObjectiveTracker.lua"]:1370: in function <...zzard_ObjectiveTracker\Blizzard_ObjectiveTracker.lua:1323>
[string "=[C]"]: in function `ObjectiveTracker_Update'
[string "@Interface\AddOns\Blizzard_ObjectiveTracker\Blizzard_ObjectiveTracker.lua"]:898: in function <...zzard_ObjectiveTracker\Blizzard_ObjectiveTracker.lua:833>

Locals: widgetContainer = <unnamed> {
 IsLayoutFrame = <function> defined @Interface\SharedXML\LayoutFrame.lua:36
 horizontalRelativePoint = "RIGHT"
 verticalAnchorYOffset = 0
 MarkDirty = <function> defined @Interface\SharedXML\LayoutFrame.lua:90
 timerWidgets = <table> {
 }
 UnregisterTimerWidget = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:247
 horizontalAnchorXOffset = 2
 OnCleaned = <function> defined @Interface\SharedXML\LayoutFrame.lua:114
 verticalAnchorPoint = "TOPRIGHT"
 GetAdditionalRegions = <function> defined @Interface\SharedXML\LayoutFrame.lua:76
 OnShow = <function> defined @Interface\SharedXML\LayoutFrame.lua:32
 UpdateWidgetLayout = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:471
 dirty = false
 dirtyLayout = false
 widgetSetLayoutDirection = 0
 layoutFunc = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:39
 numWidgetsShowing = 1
 MarkAllWidgetsForRemoval = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:270
 GetLayoutChildren = <function> defined @Interface\SharedXML\LayoutFrame.lua:64
 horizontalAnchorPoint = "LEFT"
 IsDirty = <function> defined @Interface\SharedXML\LayoutFrame.lua:110
 AnimateOutAllMarkedWidgets = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:277
 horizontalRowContainerPool = <table> {
 }
 ProcessAllWidgets = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:442
 AddLayoutChildren = <function> defined @Interface\SharedXML\LayoutFrame.lua:48
 numTimers = 0
 widgetPools = <table> {
 }
 MarkClean = <function> defined @Interface\SharedXML\LayoutFrame.lua:105
 0 = <userdata>
 verticalRelativePoint = "TOPRIGHT"
 CreateWidget = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:336
 RegisterForWidgetSet = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:149
 widgetSetID = 459
 GatherWidgetsByWidgetTag = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:261
 RegisterTimerWidget = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:229
 OnLoad = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:11
 UnregisterForWidgetSet = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:194
 Layout = <function> defined @Interface\SharedXML\LayoutFrame.lua:308
 RemoveAllWidgets = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:286
 OnEvent = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:21
 ProcessWidget = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:365
 GetNumWidgetsShowing = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:467
 OnUpdate = <function> defined @Interface\AddOns\Blizzard_UIWidgets\Blizzard_UIWidgetManager.lua:32
 GetWidgetFromPools = <function> defined 

I modified the ObjectiveTracker.lua file under NDui\Modules\Skins\Blizzard\FrameXML at line 145 and added in an IF condition below and seems to work but not sure if this would affect anything else

if widgetFrame.CurrencyContainer then
	for i = 1, widgetFrame.CurrencyContainer:GetNumChildren() do
		local bu = select(i, widgetFrame.CurrencyContainer:GetChildren())
		if bu and bu.Icon and not bu.styled then
			B.ReskinIcon(bu.Icon)
			bu.styled = true
		end
	end
end
commented

Should be fine this way.

commented

Mind if I open a PR for this?