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;