From 86fe6995ad78119782c77d0e628a735ad87b037e Mon Sep 17 00:00:00 2001 From: mid <> Date: Sat, 29 Mar 2025 10:56:32 +0200 Subject: [PATCH] Fix EncodeOpus crash --- hi/opus.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/hi/opus.c b/hi/opus.c index a4dddac..0100a80 100644 --- a/hi/opus.c +++ b/hi/opus.c @@ -22,13 +22,15 @@ static int encodeopus_perform(CHiPubNode *pubn) { CHiImage *newpcm = CHi_Crawl(&pubn->sinks[0])->data.sample; - if(n->pcmSamples + newpcm->width > n->pcmCapacity) { - n->pcmbuf = realloc(n->pcmbuf, sizeof(*n->pcmbuf) * (n->pcmCapacity = ((n->pcmSamples + newpcm->width + 1023) & ~1023))); + if(newpcm) { + if(n->pcmSamples + newpcm->width > n->pcmCapacity) { + n->pcmbuf = realloc(n->pcmbuf, sizeof(*n->pcmbuf) * (n->pcmCapacity = ((n->pcmSamples + newpcm->width + 1023) & ~1023))); + } + + memcpy(&n->pcmbuf[n->pcmSamples], newpcm->data16, sizeof(*n->pcmbuf) * newpcm->width); + n->pcmSamples += newpcm->width; } - memcpy(&n->pcmbuf[n->pcmSamples], newpcm->data16, sizeof(*n->pcmbuf) * newpcm->width); - n->pcmSamples += newpcm->width; - CHiBSFrames *frames = malloc(sizeof(*frames)); frames->count = 0;