BazCore

Shared framework for Baz addons. Provides lifecycle, events, profiles, slash commands, settings, animations, minimap button, button glow, keybinds, Edit Mode, serialization, and options panels. No dependencies.

File Details

100

  • R
  • May 2, 2026
  • 289.07 KB
  • 49
  • 12.0.5
  • Retail

File Name

BazCore-100.zip

Supported Versions

  • 12.0.5

BazCore

100 (2026-05-02)

Full Changelog Previous Releases

  • CPULog: harden /bazcpu top against crashes when the addon namespace contains Blizzard UI frames. Calling /bazcpu top BazWidgetDrawers crashed the client - the BWD addon table holds references to drawer / widget Frames (frame:GetObjectType, frame:SetPoint, etc.), and the recursive walker happily descended into those frame method tables. Two failure modes there: (1) the method tables expose huge internal Blizzard surfaces that explode the walk size, and (2) calling GetFunctionCPUUsage on certain C-backed frame methods has been reported to hard-crash WoW. Five guards added: (1) IsBlizzardFrame() detects frames via metatable.__index.GetObjectType (or GetObjectType directly on the table) and the walk skips them entirely. (2) ShouldSkipKey() blacklists "core", "config", "db", "VERSION" - back-references to BazCore / SV proxies / version strings that aren't useful to walk. (3) pairs() wrapped in pcall via safePairs() so a custom __pairs that errors won't kill the walk. (4) GetFunctionCPUUsage wrapped in pcall via safeCPU() so a single bad function ref returns 0 instead of crashing. (5) maxFunctions cap (default 2000) so a pathological namespace can't fill memory unbounded - the walker returns early once the cap hits, dumping whatever it found so far. Also dropped maxDepth from 4 to 3 (conservative - 4 was reaching deep into module trees that don't usefully exist past 3 levels). After /reload, /bazcpu top BazWidgetDrawers should return the top consumers without crashing, bump to 100