http://bugs.winehq.org/show_bug.cgi?id=27184
--- Comment #2 from Jörg Höhle hoehle@users.sourceforge.net 2011-06-06 01:46:14 CDT --- Created an attachment (id=35042) --> (http://bugs.winehq.org/attachment.cgi?id=35042) render.c test output to compare with testbot job #11482
The crash with my render test occurs after GetData yields a NULL data pointer. This happens when GetCurrentPadding equals GetBufferSize, and the renderer invokes GetData(numFramesRequested=0). We need a testcase to cover this "buffer full" situation.
MSDN says: "If the caller sets NumFramesRequested = 0, the method returns status code S_OK but does not write to the variable that the ppData parameter points to." I.e. the data pointer is not initialized! ReleaseBuffer must not crash in such a case, because "The client has the option of calling or not calling ReleaseBuffer to release a packet of size 0."
Note that in native, my player does not trigger such a "buffer full" situation, because after sleeping for 100ms, 9-10 10ms chunks will be found free. That could be another bug. If you look at the attached output from render.c:723 GetCurrentPadding on MacOS, you'll note "available space" behaviour vastly different from native.