From e024e5a23c4f5c8e8fb02e7b03c8e9265ac6c1ef Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 29 May 2018 12:39:52 +0800 Subject: =?UTF-8?q?Image=E6=94=B9=E4=B8=BA=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/3rdparty/wav/wav.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/3rdparty') diff --git a/src/3rdparty/wav/wav.c b/src/3rdparty/wav/wav.c index af33946..6f9b2ab 100644 --- a/src/3rdparty/wav/wav.c +++ b/src/3rdparty/wav/wav.c @@ -29,9 +29,7 @@ next: return p + 8; } -int wav_read(wav_t *w, const void *mem, size_t len) { - char* data = (char*)malloc(len); - memcpy(data, mem, len); +int wav_read(wav_t *w, const void *data, size_t len) { int bitdepth, channels, samplerate, format; size_t sz; const char *p = (const char*)data; @@ -57,8 +55,11 @@ int wav_read(wav_t *w, const void *mem, size_t len) { /* Find data subchunk */ p = findSubChunk((const char*)data, len, "data", &sz); if (!p) return WAV_ENODATA; + /* copy p to new buffer */ + char* buffer = (char*)malloc(sz); + memmove(buffer, p, sz); /* Init wav_t struct */ - w->data = p; + w->data = buffer; w->samplerate = samplerate; w->channels = channels; w->length = (sz / (bitdepth / 8)) / channels; -- cgit v1.1-26-g67d0