Author: emaste
Date: Wed Jun 11 17:19:57 2014
New Revision: 267366
URL: http://svnweb.freebsd.org/changeset/base/267366

Log:
  Avoid leaking file pointer on error
  
  CID:          1222506, 1222505

Modified:
  head/usr.bin/vtfontcvt/vtfontcvt.c

Modified: head/usr.bin/vtfontcvt/vtfontcvt.c
==============================================================================
--- head/usr.bin/vtfontcvt/vtfontcvt.c  Wed Jun 11 17:03:14 2014        
(r267365)
+++ head/usr.bin/vtfontcvt/vtfontcvt.c  Wed Jun 11 17:19:57 2014        
(r267366)
@@ -331,6 +331,7 @@ parse_file(const char *filename, unsigne
 {
        FILE *fp;
        size_t len;
+       int rv;
 
        fp = fopen(filename, "r");
        if (fp == NULL) {
@@ -339,8 +340,11 @@ parse_file(const char *filename, unsigne
        }
        len = strlen(filename);
        if (len > 4 && strcasecmp(filename + len - 4, ".hex") == 0)
-               return parse_hex(fp, map_idx);
-       return parse_bdf(fp, map_idx);
+               rv = parse_hex(fp, map_idx);
+       else
+               rv = parse_bdf(fp, map_idx);
+       fclose(fp);
+       return (rv);
 }
 
 static void
@@ -447,6 +451,7 @@ write_fnt(const char *filename)
        fh.map_count[3] = htobe32(map_folded_count[3]);
        if (fwrite(&fh, sizeof fh, 1, fp) != 1) {
                perror(filename);
+               fclose(fp);
                return (1);
        }
 
@@ -456,9 +461,11 @@ write_fnt(const char *filename)
            write_mappings(fp, VFNT_MAP_BOLD) != 0 ||
            write_mappings(fp, 3) != 0) {
                perror(filename);
+               fclose(fp);
                return (1);
        }
 
+       fclose(fp);
        return (0);
 }
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to