Index: misc.h =================================================================== --- misc.h (revision 15409) +++ misc.h (working copy) @@ -33,6 +33,11 @@ #include #endif +#ifdef __SYMBIAN32__ +# define LITTLE_ENDIAN 1 +# define BYTE_ORDER LITTLE_ENDIAN +#endif + #if BYTE_ORDER==LITTLE_ENDIAN union magic { struct { Index: floor0.c =================================================================== --- floor0.c (revision 15409) +++ floor0.c (working copy) @@ -145,7 +145,7 @@ int i; int ampoffseti=ampoffset*4096; int ampi=amp; - ogg_int32_t *ilsp=(ogg_int32_t *)alloca(m*sizeof(*ilsp)); + ogg_int32_t *ilsp=(ogg_int32_t *)_ogg_malloc(m*sizeof(*ilsp)); /* lsp is in 8.24, range 0 to PI; coslook wants it in .16 0 to 1*/ for(i=0;i>COS_LOOKUP_I_SHIFT)>=COS_LOOKUP_I_SZ){ memset(curve,0,sizeof(*curve)*n); + _ogg_free(ilsp); return; } Index: os_types.h =================================================================== --- os_types.h (revision 15409) +++ os_types.h (working copy) @@ -32,8 +32,15 @@ #define _ogg_realloc realloc #define _ogg_free free -#ifdef _WIN32 +#ifdef __SYMBIAN32__ + typedef long long ogg_int64_t; + typedef int ogg_int32_t; + typedef unsigned long int ogg_uint32_t; + typedef short int ogg_int16_t; + +#elif defined(_WIN32) + # ifndef __GNUC__ /* MSVC/Borland */ typedef __int64 ogg_int64_t; Index: mapping0.c =================================================================== --- mapping0.c (revision 15409) +++ mapping0.c (working copy) @@ -188,11 +188,11 @@ int i,j; long n=vb->pcmend=ci->blocksizes[vb->W]; - ogg_int32_t **pcmbundle=(ogg_int32_t **)alloca(sizeof(*pcmbundle)*vi->channels); - int *zerobundle=(int *)alloca(sizeof(*zerobundle)*vi->channels); + ogg_int32_t **pcmbundle=(ogg_int32_t **)_ogg_malloc(sizeof(*pcmbundle)*vi->channels); + int *zerobundle=(int *)_ogg_malloc(sizeof(*zerobundle)*vi->channels); - int *nonzero =(int *)alloca(sizeof(*nonzero)*vi->channels); - void **floormemo=(void **)alloca(sizeof(*floormemo)*vi->channels); + int *nonzero =(int *)_ogg_malloc(sizeof(*nonzero)*vi->channels); + void **floormemo=(void **)_ogg_malloc(sizeof(*floormemo)*vi->channels); /* time domain information decode (note that applying the information would have to happen later; we'll probably add a @@ -309,6 +309,10 @@ seq+=vi->channels; /* all done! */ + _ogg_free(pcmbundle); + _ogg_free(zerobundle); + _ogg_free(nonzero); + _ogg_free(floormemo); return(0); } Index: codebook.c =================================================================== --- codebook.c (revision 15409) +++ codebook.c (working copy) @@ -229,15 +229,20 @@ oggpack_buffer *b,int n,int point){ if(book->used_entries>0){ int step=n/book->dim; - long *entry = (long *)alloca(sizeof(*entry)*step); - ogg_int32_t **t = (ogg_int32_t **)alloca(sizeof(*t)*step); + long *entry = (long *)_ogg_malloc(sizeof(*entry)*step); + ogg_int32_t **t = (ogg_int32_t **)_ogg_malloc(sizeof(*t)*step); int i,j,o; int shift=point-book->binarypoint; if(shift>=0){ for (i = 0; i < step; i++) { entry[i]=decode_packed_entry_number(book,b); - if(entry[i]==-1)return(-1); + if(entry[i]==-1) + { + _ogg_free(entry); + _ogg_free(t); + return(-1); + } t[i] = book->valuelist+entry[i]*book->dim; } for(i=0,o=0;idim;i++,o+=step) Index: os.h =================================================================== --- os.h (revision 15409) +++ os.h (working copy) @@ -27,16 +27,17 @@ # define STIN static __inline__ # elif _WIN32 # define STIN static __inline +# else +# define STIN static # endif -#else -# define STIN static + #endif #ifndef M_PI # define M_PI (3.1415926536f) #endif -#ifdef _WIN32 +#if defined(_WIN32) && !defined(__SYMBIAN32__) # include # define rint(x) (floor((x)+0.5f)) # define NO_FLOAT_MATH_LIB Index: bld.inf =================================================================== --- bld.inf (revision 0) +++ bld.inf (revision 0) @@ -0,0 +1,11 @@ +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS +ivorbiscodec.h tremor/ivorbiscodec.h +ivorbisfile.h tremor/ivorbisfile.h +ogg.h tremor/ogg.h +os_types.h tremor/os_types.h + +PRJ_MMPFILES +tremor.mmp Index: info.c =================================================================== --- info.c (revision 15409) +++ info.c (working copy) @@ -56,7 +56,7 @@ long i; int found = 0; int taglen = strlen(tag)+1; /* +1 for the = we append */ - char *fulltag = (char *)alloca(taglen+ 1); + char *fulltag = (char *)_ogg_malloc(taglen+ 1); strcpy(fulltag, tag); strcat(fulltag, "="); @@ -70,13 +70,14 @@ found++; } } + _ogg_free(fulltag); return NULL; /* didn't find anything */ } int vorbis_comment_query_count(vorbis_comment *vc, char *tag){ int i,count=0; int taglen = strlen(tag)+1; /* +1 for the = we append */ - char *fulltag = (char *)alloca(taglen+1); + char *fulltag = (char *)_ogg_malloc(taglen+1); strcpy(fulltag,tag); strcat(fulltag, "="); @@ -85,6 +86,7 @@ count++; } + _ogg_free(fulltag); return count; } Index: window.c =================================================================== --- window.c (revision 15409) +++ window.c (working copy) @@ -56,7 +56,7 @@ long *blocksizes, int lW,int W,int nW){ - LOOKUP_T *window[2]={window_p[0],window_p[1]}; + LOOKUP_T *window[2]; long n=blocksizes[W]; long ln=blocksizes[lW]; long rn=blocksizes[nW]; @@ -69,6 +69,9 @@ int i,p; + window[0]=window_p[0]; + window[1]=window_p[1]; + for(i=0;ipcmend>>1; int end=(info->endend:max); int n=end-info->begin; + int ***partword = 0; if(n>0){ int partvals=n/samples_per_partition; int partwords=(partvals+partitions_per_word-1)/partitions_per_word; - int ***partword=(int ***)alloca(ch*sizeof(*partword)); + partword=(int ***)_ogg_malloc(ch*sizeof(*partword)); for(j=0;jlengthlist,s->entries,c->used_entries); - ogg_uint32_t **codep=(ogg_uint32_t **)alloca(sizeof(*codep)*n); + ogg_uint32_t **codep=(ogg_uint32_t **)_ogg_malloc(sizeof(*codep)*n); if(codes==NULL)goto err_out; @@ -358,7 +358,7 @@ qsort(codep,n,sizeof(*codep),sort32a); - sortindex=(int *)alloca(n*sizeof(*sortindex)); + sortindex=(int *)_ogg_malloc(n*sizeof(*sortindex)); c->codelist=(ogg_uint32_t *)_ogg_malloc(n*sizeof(*c->codelist)); /* the index is a reverse index */ for(i=0;icodelist[sortindex[i]]=codes[i]; + _ogg_free(codep); _ogg_free(codes); @@ -431,8 +432,10 @@ } } +_ogg_free(sortindex); return(0); err_out: + _ogg_free(sortindex); vorbis_book_clear(c); return(-1); }