diff --git a/src/opus_decoder.c b/src/opus_decoder.c
index c47517cfec87e8b2ab4efc04793c80181673b0b5..c784233685f2cd9cacb40358756b8fd02254c911 100644
--- a/src/opus_decoder.c
+++ b/src/opus_decoder.c
@@ -65,16 +65,15 @@ OpusDecoder *opus_decoder_init(OpusDecoder *st, int Fs, int channels)
 {
 	void *silk_dec;
 	CELTDecoder *celt_dec;
-	int ret, silkDecSizeBytes, celtDecSizeBytes;
+	int ret, silkDecSizeBytes;
 
-	memset(st, 0, sizeof(OpusDecoder));
+	memset(st, 0, opus_decoder_get_size(channels));
 	/* Initialize SILK encoder */
     ret = silk_Get_Decoder_Size( &silkDecSizeBytes );
     if( ret ) {
         return NULL;
     }
     silkDecSizeBytes = align(silkDecSizeBytes);
-    celtDecSizeBytes = celt_decoder_get_size(channels);
     st->silk_dec_offset = align(sizeof(OpusDecoder));
     st->celt_dec_offset = st->silk_dec_offset+silkDecSizeBytes;
     silk_dec = (char*)st+st->silk_dec_offset;
diff --git a/src/opus_encoder.c b/src/opus_encoder.c
index 4bc495016436e68231fc890c1bc0fb4e076c11f2..f306606a74e14281028804339d91835d658db535 100644
--- a/src/opus_encoder.c
+++ b/src/opus_encoder.c
@@ -80,15 +80,14 @@ OpusEncoder *opus_encoder_init(OpusEncoder* st, int Fs, int channels)
 	void *silk_enc;
 	CELTEncoder *celt_enc;
     int err;
-	int ret, silkEncSizeBytes, celtEncSizeBytes;
+	int ret, silkEncSizeBytes;
 
-	memset(st, 0, sizeof(OpusEncoder));
+	memset(st, 0, opus_encoder_get_size(channels));
     /* Create SILK encoder */
     ret = silk_Get_Encoder_Size( &silkEncSizeBytes );
     if( ret )
     	return NULL;
 	silkEncSizeBytes = align(silkEncSizeBytes);
-    celtEncSizeBytes = celt_encoder_get_size(channels);
     st->silk_enc_offset = align(sizeof(OpusEncoder));
     st->celt_enc_offset = st->silk_enc_offset+silkEncSizeBytes;
     silk_enc = (char*)st+st->silk_enc_offset;