aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/sed/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/sed/main.c')
-rw-r--r--usr.bin/sed/main.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/usr.bin/sed/main.c b/usr.bin/sed/main.c
index 77c89ae9e8cd..bb5ffece68f7 100644
--- a/usr.bin/sed/main.c
+++ b/usr.bin/sed/main.c
@@ -327,15 +327,21 @@ mf_fgets(SPACE *sp, enum e_spflag spflag)
}
if (infile != NULL) {
fclose(infile);
- if (*oldfname != '\0' &&
- rename(fname, oldfname) != 0) {
- warn("rename()");
- unlink(tmpfname);
- exit(1);
+ if (*oldfname != '\0') {
+ if (rename(fname, oldfname) != 0) {
+ warn("rename()");
+ unlink(tmpfname);
+ exit(1);
+ }
+ *oldfname = '\0';
}
- if (*tmpfname != '\0')
+ if (*tmpfname != '\0') {
+ if (outfile != NULL && outfile != stdout)
+ fclose(outfile);
+ outfile = NULL;
rename(tmpfname, fname);
- *tmpfname = *oldfname = '\0';
+ *tmpfname = '\0';
+ }
outfname = NULL;
}
if (firstfile == 0)