until an official fix,
the worldmap zoom bug can kindof be worked around like this:
open onlink in a disassembler, and (remember that ASLR will try to fuck you over, moving every base address at every program restart, invalidating the addresses);
find the WorldMapInterfaceLabel::SetLabelPosition function,
patch the first MOV EBP,ESP instruction to JMP SHORT to the INT3 instructions behind it (you'll need 7 bytes), change the INT3's to
MOV EBP,ESP
JMP LONG 0068BCCD (a bunch of 0x000000000 at end of file)
(
http://prntscr.com/6hdnfs )
then at
0068BCCD
CPU Disasm
Address Hex dump Command Comments
0068BCCD 60 PUSHAD
0068BCCE 837D 08 07 CMP DWORD PTR SS:[EBP+8],7
0068BCD2 77 08 JA SHORT Error
0068BCD4 837D 08 00 CMP DWORD PTR SS:[EBP+8],0
0068BCD8 7C 02 JL SHORT Error
0068BCDA EB 16 JMP SHORT Finished
Error:
0068BCDC 60 PUSHAD
0068BCDD 68 F8BC6800 PUSH OFFSET TheString
0068BCE2 E8 795FD7FF CALL Onlink-x86.App::Output
0068BCE7 83C4 04 ADD ESP,4
0068BCEA 61 POPAD
0068BCEB C745 08 01000 MOV DWORD PTR SS:[EBP+8],1
Finished:
0068BCF2 61 POPAD
0068BCF3 ^ E9 9BB7DBFF JMP LONG 00447493
TheString:
"Warning: label assertion failed, but (pretending its 1 and) trying to ignore.."+0x00
(
http://prntscr.com/6hdo3v )
where 00447493 is the instruction right AFTER the patched MOV EBP,ESP.
Now it won't crash, but you might get the labels at the wrong locations when zooming in a lot..or something... im not really sure what this 0-7 switch-case thing is, i just know that it must be between 0-7 for not to error out, and sometimes when zooming in, its like int32_t(-1163005939)

mc2m? miah? any1? what's the switch in WorldMapInterfaceLabel::SetLabelPosition for?
