From: PatR Date: Sun, 6 Aug 2017 00:29:24 +0000 (-0700) Subject: fix part of #H5778 - file descriptor leaks X-Git-Tag: NetHack-3.6.1_RC01~435 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d7101cd291fb352e8a35c7c1fb6bf2d6e1398f0;p=nethack 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. --- diff --git a/sys/atari/tos.c b/sys/atari/tos.c index eee7bd40f..9bf36a81b 100644 --- a/sys/atari/tos.c +++ b/sys/atari/tos.c @@ -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. */ /* @@ -271,17 +271,20 @@ char *from, *to; int fromfd, tofd, r; 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; - if ((tofd = open(to, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, FCMASK)) - < 0) + tofd = open(to, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, FCMASK); + if (tofd < 0) { + close(fromfd); return -1; - buf = (char *) alloc((size_t) BIGBUF); + } + buf = (char *) alloc((unsigned) BIGBUF); while ((r = read(fromfd, buf, BIGBUF)) > 0) write(tofd, buf, r); close(fromfd); close(tofd); - free(buf); + free((genericptr_t) buf); return 0; /* successful */ }