Commit 0985b038 authored by Huw Davies's avatar Huw Davies Committed by Alexandre Julliard

winealsa: Limit Wow64 buffer allocations to 32-bit addresses.

parent 73a50095
......@@ -766,6 +766,15 @@ static void silence_buffer(struct alsa_stream *stream, BYTE *buffer, UINT32 fram
memset(buffer, 0, frames * stream->fmt->nBlockAlign);
}
static ULONG_PTR zero_bits(void)
{
#ifdef _WIN64
return !NtCurrentTeb()->WowTebOffset ? 0 : 0x7fffffff;
#else
return 0;
#endif
}
static NTSTATUS create_stream(void *args)
{
struct create_stream_params *params = args;
......@@ -948,7 +957,7 @@ static NTSTATUS create_stream(void *args)
stream->fmt = &fmtex->Format;
size = stream->bufsize_frames * params->fmt->nBlockAlign;
if(NtAllocateVirtualMemory(GetCurrentProcess(), (void **)&stream->local_buffer, 0, &size,
if(NtAllocateVirtualMemory(GetCurrentProcess(), (void **)&stream->local_buffer, zero_bits(), &size,
MEM_COMMIT, PAGE_READWRITE)){
params->result = E_OUTOFMEMORY;
goto exit;
......@@ -1661,7 +1670,7 @@ static NTSTATUS get_render_buffer(void *args)
stream->tmp_buffer = NULL;
}
size = frames * stream->fmt->nBlockAlign;
if(NtAllocateVirtualMemory(GetCurrentProcess(), (void **)&stream->tmp_buffer, 0, &size,
if(NtAllocateVirtualMemory(GetCurrentProcess(), (void **)&stream->tmp_buffer, zero_bits(), &size,
MEM_COMMIT, PAGE_READWRITE)){
stream->tmp_buffer_frames = 0;
return alsa_unlock_result(stream, &params->result, E_OUTOFMEMORY);
......@@ -1764,7 +1773,7 @@ static NTSTATUS get_capture_buffer(void *args)
stream->tmp_buffer = NULL;
}
size = *frames * stream->fmt->nBlockAlign;
if(NtAllocateVirtualMemory(GetCurrentProcess(), (void **)&stream->tmp_buffer, 0, &size,
if(NtAllocateVirtualMemory(GetCurrentProcess(), (void **)&stream->tmp_buffer, zero_bits(), &size,
MEM_COMMIT, PAGE_READWRITE)){
stream->tmp_buffer_frames = 0;
return alsa_unlock_result(stream, &params->result, E_OUTOFMEMORY);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment