From f17623f2f9c7b129ba6b27f2c32fdfed70a5736c Mon Sep 17 00:00:00 2001 From: "Marcello Caramma (mcaramma)" Date: Mon, 24 Feb 2014 15:06:46 -0500 Subject: [PATCH] Fixes an aliasing bug in the MDCT when the frame size isn't a multiple of 4. In that case, the yp0 and yp1 ended up aliasing for the last element, despite being marked as restrict. Signed-off-by: Jean-Marc Valin --- celt/mdct.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/celt/mdct.c b/celt/mdct.c index 1634e8e0..fa5098cd 100644 --- a/celt/mdct.c +++ b/celt/mdct.c @@ -276,8 +276,8 @@ void clt_mdct_backward(const mdct_lookup *l, kiss_fft_scalar *in, kiss_fft_scala /* Post-rotate and de-shuffle from both ends of the buffer at once to make it in-place. */ { - kiss_fft_scalar * OPUS_RESTRICT yp0 = out+(overlap>>1); - kiss_fft_scalar * OPUS_RESTRICT yp1 = out+(overlap>>1)+N2-2; + kiss_fft_scalar * yp0 = out+(overlap>>1); + kiss_fft_scalar * yp1 = out+(overlap>>1)+N2-2; const kiss_twiddle_scalar *t = &trig[0]; /* Loop to (N4+1)>>1 to handle odd N4. When N4 is odd, the middle pair will be computed twice. */