X-Git-Url: https://git.llucax.com/z.facultad/75.06/jacu.git/blobdiff_plain/69bddb46f46871d27bcf797cd6fae14430802380..0189fdaa9744c0aeddcf72ca0f3f7fa3981e53a2:/src/statichuff/statichuff.c?ds=sidebyside diff --git a/src/statichuff/statichuff.c b/src/statichuff/statichuff.c index e608bb2..db164d2 100644 --- a/src/statichuff/statichuff.c +++ b/src/statichuff/statichuff.c @@ -42,10 +42,10 @@ void shuff_cpynode(SHUFFNODE *node1, SHUFFNODE *node2) node1->rchild = node2->rchild; } -int shuff_compnode(SHUFFNODE *node1, SHUFFNODE *node2) +int shuff_compnode(const void *node1, const void *node2) { - if (node1->freq < node2->freq) return 1; - if (node1->freq > node2->freq) return -1; + if (((SHUFFNODE*)node1)->freq < ((SHUFFNODE*)node2)->freq) return 1; + if (((SHUFFNODE*)node1)->freq > ((SHUFFNODE*)node2)->freq) return -1; return 0; } @@ -121,7 +121,6 @@ SHUFFNODE *shuff_buildtree(SHUFFNODE *list, int listcount) SHUFFNODE *lastsymbol = list+(listcount-1); SHUFFNODE *node1,*node2; - /* Ordenamos inicialmente la inputlist para tomar las dos freqs min */ while (lastsymbol > list) { /* Ordeno la lista por frecuencia descendente */ qsort(list,listcount,sizeof(SHUFFNODE),shuff_compnode); @@ -256,6 +255,11 @@ int shuff_encode_file(char *inputfile, char *outputfile) /* Encodeo byte per byte */ shuff_encode_symbols(freqtable,codetable,inputfile,outputfile); + /* Free up memory baby yeah */ + free(freqtable); + free(inputlist); + free(codetable); + return 1; } @@ -317,6 +321,10 @@ int shuff_decode_file(char *inputfile, char *outputfile) fclose(fpsource); fclose(fpdest); + /* Free up memory baby yeah */ + free(ftable); + free(inputlist); + return 1; }