fix part of #H5778 - file descriptor leaks
Handle the part of #H5778 in sys/atari/tos.c. The part in util/recover.c has already been fixed; the part in src/files.c still needs to be fixed.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
/* NetHack 3.6 tos.c $NHDT-Date: 1432512796 2015/05/25 00:13:16 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
/* NetHack 3.6 tos.c $NHDT-Date: 1501979358 2017/08/06 00:29:18 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.8 $ */
|
||||||
/* NetHack may be freely redistributed. See license for details. */
|
/* NetHack may be freely redistributed. See license for details. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -271,17 +271,20 @@ char *from, *to;
|
|||||||
int fromfd, tofd, r;
|
int fromfd, tofd, r;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
if ((fromfd = open(from, O_RDONLY | O_BINARY, 0)) < 0)
|
fromfd = open(from, O_RDONLY | O_BINARY, 0);
|
||||||
|
if (fromfd < 0)
|
||||||
return -1;
|
return -1;
|
||||||
if ((tofd = open(to, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, FCMASK))
|
tofd = open(to, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, FCMASK);
|
||||||
< 0)
|
if (tofd < 0) {
|
||||||
|
close(fromfd);
|
||||||
return -1;
|
return -1;
|
||||||
buf = (char *) alloc((size_t) BIGBUF);
|
}
|
||||||
|
buf = (char *) alloc((unsigned) BIGBUF);
|
||||||
while ((r = read(fromfd, buf, BIGBUF)) > 0)
|
while ((r = read(fromfd, buf, BIGBUF)) > 0)
|
||||||
write(tofd, buf, r);
|
write(tofd, buf, r);
|
||||||
close(fromfd);
|
close(fromfd);
|
||||||
close(tofd);
|
close(tofd);
|
||||||
free(buf);
|
free((genericptr_t) buf);
|
||||||
return 0; /* successful */
|
return 0; /* successful */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user