Huw Davies (@huw) commented about dlls/winepulse.drv/pulse.c:
stream->clock_lastpos = stream->clock_written = 0;stream->pa_offs_bytes = stream->lcl_offs_bytes = 0;stream->held_bytes = stream->pa_held_bytes = 0;stream->period_bytes = pa_frame_size(&new_ss) * muldiv(stream->mmdev_period_usec, new_ss.rate, 1000000);stream->real_bufsize_bytes = size;stream->bufsize_frames = new_bufsize_frames;stream->ss = new_ss;size = 0;NtFreeVirtualMemory(GetCurrentProcess(), (void **)&stream->local_buffer, &size, MEM_RELEASE);silence_buffer(new_ss.format, new_buffer, size);stream->local_buffer = new_buffer;}}
The nested `if`s here are rather unfortunate. I think it would look cleaner if we used `goto`s in the failure cases.