@@ -519,6 +519,7 @@ int ScriptParser::saveFileIOBuf(const char *filename,
519
519
520
520
FILE *fp;
521
521
if ((fp = fopen (filename, " wb" , use_save_dir)) == NULL ) return -1 ;
522
+ defer ([&fp]{fclose (fp);});
522
523
523
524
size_t ret = fwrite (file_io_buf + offset, 1 , file_io_buf_ptr - offset, fp);
524
525
@@ -529,8 +530,6 @@ int ScriptParser::saveFileIOBuf(const char *filename,
529
530
fputc (' *' , fp);
530
531
}
531
532
532
- fclose (fp);
533
-
534
533
if (ret != file_io_buf_ptr - offset) return -2 ;
535
534
536
535
return 0 ;
@@ -542,6 +541,7 @@ size_t ScriptParser::loadFileIOBuf(const char *filename) {
542
541
543
542
FILE *fp;
544
543
if ((fp = fopen (filename, " rb" , use_save_dir)) == NULL ) return 0 ;
544
+ defer ([&fp]{fclose (fp);});
545
545
546
546
fseek (fp, 0 , SEEK_END);
547
547
size_t len = ftell (fp);
@@ -550,7 +550,6 @@ size_t ScriptParser::loadFileIOBuf(const char *filename) {
550
550
551
551
fseek (fp, 0 , SEEK_SET);
552
552
size_t ret = fread (file_io_buf, 1 , len, fp);
553
- fclose (fp);
554
553
555
554
return ret;
556
555
}
@@ -840,6 +839,7 @@ void ScriptParser::createKeyTable(const char *key_exe) {
840
839
utils::printError (" createKeyTable: can't open EXE file %s\n " , key_exe);
841
840
return ;
842
841
}
842
+ defer ([&fp]{fclose (fp);});
843
843
844
844
key_table = new unsigned char [256 ];
845
845
@@ -862,7 +862,6 @@ void ScriptParser::createKeyTable(const char *key_exe) {
862
862
ring_buffer[ring_last] = ch;
863
863
ring_last = (ring_last + 1 ) % 256 ;
864
864
}
865
- fclose (fp);
866
865
867
866
if (ch == EOF) errorAndExit (" createKeyTable: can't find a key table." );
868
867
0 commit comments