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;