Only Real and Integers can handle leaks.How exactly does it leak?
GetKillingUnit()
it's a unit) that that function leaks... function Trigger takes nothing returns nothing
call IncUnitAbilityLevelSwapped( 'MySpellInt', GetKillingUnitBJ() )
endfunction
function BetterTrigger takes nothing returns nothing
call IncUnitAbilityLevel( GetKillingUnit(), 'MySpellInt' )
endfunction