http://bugs.winehq.org/show_bug.cgi?id=32798
Wojciech Pyczak nissarin@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nissarin@gmail.com
--- Comment #3 from Wojciech Pyczak nissarin@gmail.com 2013-01-26 20:52:39 CST --- No, there is a memory leak somewhere, you can confirm it by looking at PoE forum where a lot of people encountered this problem.
Anyway, since marceel narrowed it down to this commit I poked it a bit, first of all here [1] is a log from game client with "WINEDEBUG=trace+uniscribe", it's over 400MB unpacked (you've been warned..), basically I started the game (takes some time on wine) and keep it open (at login screen) for a few seconds, probably not more than one minute total. You can see a lot of those:
trace:uniscribe:GPOS_expand_language_cache Deflang 0x2c8e278e, LangCount 0
I can only guess - I've no idea how wine internals work - that calling HeapAlloc with 0 size is the source of the leak, so I put simple check in GPOS_expand_language_cache function which will cause return if count is 0 and I think it works. At least after several minutes of gameplay (servers seems to be overloaded so I keep getting disconnected all the time) I didn't notice any increasing memory usage.
As a side note, perhaps _initialize_language_cache should use separate variable to store it's state in case situation like this, i.e. language_count = 0, occurs in the future.
[1] http://www.sendspace.com/file/o49fc3