diff --git a/tools/celtenc.c b/tools/celtenc.c
index c07ed745b8a4a5a156cfea16df9d85c7431129b2..d6e0138742d403db85227169f3cab6b0b1fcc5f6 100644
--- a/tools/celtenc.c
+++ b/tools/celtenc.c
@@ -92,9 +92,9 @@ int oe_write_page(ogg_page *page, FILE *fp)
 /* Convert input audio bits, endians and channels */
 static int read_samples(FILE *fin,int frame_size, int bits, int channels, int lsb, short * input, char *buff, celt_int32 *size)
 {   
-   unsigned char in[MAX_FRAME_SIZE*2];
+   short s[MAX_FRAME_SIZE];
+   unsigned char *in = (unsigned char*)s;
    int i;
-   short *s;
    int nb_read;
 
    if (size && *size<=0)
@@ -120,7 +120,6 @@ static int read_samples(FILE *fin,int frame_size, int bits, int channels, int ls
    if (nb_read==0)
       return 0;
 
-   s=(short*)in;
    if(bits==8)
    {
       /* Convert 8->16 bits */
@@ -144,7 +143,7 @@ static int read_samples(FILE *fin,int frame_size, int bits, int channels, int ls
    /* copy to float input buffer */
    for (i=0;i<frame_size*channels;i++)
    {
-      input[i]=(short)s[i];
+      input[i]=s[i];
    }
 
    for (i=nb_read*channels;i<frame_size*channels;i++)