The TsSpinEdit control suffer from a bug when a skin is deactivated, it may cause a crash and a memory corruption.
Problem is in the method TsTimerSpeedButton.DrawGlyph, access is made to
Code:
SkinData.SkinManager.gd[FOwner.FOwner.SkinData.SkinIndex]
, however in the context of deactivating skins, the skin index is outside the bounds.
To fix the issue, in line 1073 of sSpineEdit.pas, replace:
Code:
– if (SkinData.SkinIndex > -1) and not FOwner.FOwner.SkinData.CustomFont then begin
by
Code:
+ if (SkinData.SkinIndex > -1) and not FOwner.FOwner.SkinData.CustomFont and
+ (High(SkinData.SkinManager.gd) >= FOwner.FOwner.SkinData.SkinIndex) then begin