Commit Diff


commit - b893b787cf33db7b9672b44c31066224b5cfd70e
commit + acc3e1bcd5460c709d9f18c07079fe4a6b8d9846
blob - 8f8144830390c50575f345dce85528b5a62b0dcc
blob + 32746e7cb373bee22079c29c3151cfde73328275
--- FICS/adminproc.c
+++ FICS/adminproc.c
@@ -211,14 +211,13 @@ add_item(char *new_item, char *filename)
 
 	msnprintf(tmp_file, sizeof tmp_file, "%s/.tmp.idx", news_dir);
 
-	new_fp = fopen(tmp_file, "w");
-	old_fp = fopen(filename, "r");
-
-	if (!new_fp || !old_fp)
+	if ((new_fp = fopen(tmp_file, "w")) == NULL)
 		return 0;
-
 	fprintf(new_fp, "%s", new_item);
 
+	if ((old_fp = fopen(filename, "r")) == NULL)
+		goto end;
+
 	while (1) {
 		fgets(junk, MAX_LINE_SIZE, old_fp);
 
@@ -227,9 +226,12 @@ add_item(char *new_item, char *filename)
 		fprintf(new_fp, "%s", junk);
 	}
 
+  end:
 	fclose(new_fp);
-	fclose(old_fp);
-	remove(filename);
+	if (old_fp) {
+		fclose(old_fp);
+		remove(filename);
+	}
 	rename(tmp_file, filename);
 
 	return 1;