summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/streams.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/streams.c')
-rw-r--r--src/emu/streams.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/emu/streams.c b/src/emu/streams.c
index 2628b40d5f6..24bedbf56a6 100644
--- a/src/emu/streams.c
+++ b/src/emu/streams.c
@@ -723,15 +723,20 @@ static void allocate_resample_buffers(running_machine *machine, sound_stream *st
if (stream->resample_bufalloc < bufsize)
{
int inputnum;
+ int oldsize;
/* this becomes the new allocation size */
+ oldsize = stream->resample_bufalloc;
stream->resample_bufalloc = bufsize;
/* iterate over outputs and realloc their buffers */
for (inputnum = 0; inputnum < stream->inputs; inputnum++)
{
stream_input *input = &stream->input[inputnum];
- input->resample = auto_extend_array(machine, input->resample, stream_sample_t, stream->resample_bufalloc);
+ stream_sample_t *newbuffer = auto_alloc_array(machine, stream_sample_t, stream->resample_bufalloc);
+ memcpy(newbuffer, input->resample, oldsize * sizeof(stream_sample_t));
+ delete[] input->resample;
+ input->resample = newbuffer;
}
}
}
@@ -761,8 +766,10 @@ static void allocate_output_buffers(running_machine *machine, sound_stream *stre
for (outputnum = 0; outputnum < stream->outputs; outputnum++)
{
stream_output *output = &stream->output[outputnum];
- output->buffer = auto_extend_array(machine, output->buffer, stream_sample_t, stream->output_bufalloc);
- memset(&output->buffer[oldsize], 0, (stream->output_bufalloc - oldsize) * sizeof(output->buffer[0]));
+ stream_sample_t *newbuffer = auto_alloc_array(machine, stream_sample_t, stream->output_bufalloc);
+ memcpy(newbuffer, output->buffer, oldsize * sizeof(stream_sample_t));
+ delete[] output->buffer;
+ output->buffer = newbuffer;
}
}
}