]> www.wagner.pp.ru Git - oss/catdoc.git/blobdiff - src/charsets.c
More uses of uint16_t instead of short
[oss/catdoc.git] / src / charsets.c
index b52a1eb651b019f91d4d3757c057c1b5333f9397..49875e3b4f27f4251d4778fefed382ed135040be 100644 (file)
@@ -14,7 +14,7 @@
 
 char *charset_path=CHARSETPATH;
 char *source_csname=SOURCE_CHARSET, *dest_csname=TARGET_CHARSET;
-short int * source_charset;
+uint16_t * source_charset;
 int unknown_as_hex=0;
 char bad_char[]=UNKNOWN_CHAR;
 CHARSET target_charset;
@@ -46,13 +46,14 @@ CHARSET make_reverse_map(short int *charset) {
        int i,j,k,l;
        short int *p;   
        if (! charset) {
+               free(newmap);
                return NULL;
        }       
        for (i=0;i<256;i++) {
                k= charset[i];
                j=  (unsigned)k>>8;
                if (!newmap[j]) {
-                       newmap[j] = malloc(sizeof(short int *)*256);
+                       newmap[j] = (short int *)malloc(sizeof(short int)*256);
                        if (!newmap[j]) {
                                fprintf(stderr,"Insufficient memory for  charset\n");
                                exit(1);
@@ -72,7 +73,7 @@ CHARSET make_reverse_map(short int *charset) {
 short int * read_charset(const char *filename) {
        char *path;
        FILE *f;
-       short int *new=calloc(sizeof(short int),256);
+       short int *new;
        int c;
        long int uc;
        path= find_file(stradd(filename,CHARSET_EXT),charset_path);
@@ -89,6 +90,7 @@ short int * read_charset(const char *filename) {
        if (input_buffer)
                setvbuf(f,input_buffer,_IOFBF,FILE_BUFFER);
        /* defaults */
+       new = calloc(sizeof(short int),256);
        for (c=0;c<32;c++) {
                new[c]=c;
        }
@@ -163,7 +165,7 @@ int get_utf16msb (FILE *f,long *offset,long fileend) {
 
 int get_utf8 (FILE *f,long *offset,long fileend) {
        unsigned char buf[3];
-       int d,c;
+       int c;
     int result;
        result=catdoc_read(buf, 1, 1, f);
        if (result<0) {
@@ -172,7 +174,6 @@ int get_utf8 (FILE *f,long *offset,long fileend) {
        }       
        if (result==0) return EOF;
        c=buf[0];
-       d=0;
        if (c<0x80) 
                return c;
        if (c <0xC0)