Combined upstream commits 980592386f23db8b0dc84c434805cb167d0cc091 and
5ef4ad86ec934282cba891922ec2d13784da3354.
diff -u b/src/textcat.c b/src/textcat.c
--- b/src/textcat.c
+++ b/src/textcat.c
@@ -212,8 +212,6 @@
                                 sizeof(char) * (tmp_size + 1));
             if (tmp == NULL)
             {
-                free(finger_print_file_name);
-                finger_print_file_name_size = 0;
                 goto BAILOUT;
             }
             else
@@ -226,10 +224,7 @@
         strcat(finger_print_file_name, segment[0]);
 
         if (fp_Read(h->fprint[h->size], finger_print_file_name, 400) == 0)
-        {
-            textcat_Done(h);
             goto BAILOUT;
-        }
         h->fprint_disable[h->size] = 0xF0;  /* 0xF0 is the code for enabled
                                                languages, 0x0F is for disabled 
                                              */
@@ -242,9 +237,10 @@
     return h;
 
   BAILOUT:
+    free(finger_print_file_name);
     fclose(fp);
+    textcat_Done(h);
     return NULL;
-
 }
 
 extern candidate_t *textcat_GetClassifyFullOutput(void *handle)
