Because there's no short or byte type for the return
value definition of System.dll, it makes no difference
between functions returning int or short. If the
function doesn't clear eax before it sets only a few
bytes of it, like GetSystemDefaultLangID does, the
wrong value will be returned. The actual value depends
on what eax contained before the actual function is
called. In System's case, that's the proc pointer.
More at:
http://forums.winamp.com/showthread.php?s=&threadid=252680