Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/games/tetris Fix fd leak in error cases. Found by cppcheck.
details: https://anonhg.NetBSD.org/src/rev/947454a090a5
branches: trunk
changeset: 760459:947454a090a5
user: wiz <wiz%NetBSD.org@localhost>
date: Wed Jan 05 15:48:00 2011 +0000
description:
Fix fd leak in error cases. Found by cppcheck.
diffstat:
games/tetris/scores.c | 24 ++++++++++++------------
1 files changed, 12 insertions(+), 12 deletions(-)
diffs (87 lines):
diff -r 874f20d7c44e -r 947454a090a5 games/tetris/scores.c
--- a/games/tetris/scores.c Wed Jan 05 15:40:55 2011 +0000
+++ b/games/tetris/scores.c Wed Jan 05 15:48:00 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: scores.c,v 1.19 2010/02/03 15:34:39 roy Exp $ */
+/* $NetBSD: scores.c,v 1.20 2011/01/05 15:48:00 wiz Exp $ */
/*-
* Copyright (c) 1992, 1993
@@ -458,8 +458,7 @@
result = read(sd, &header, sizeof(header));
if (result < 0) {
warn("Score file %s: read", _PATH_SCOREFILE);
- close(sd);
- goto fail;
+ goto sdfail;
}
if (result != 0 && (size_t)result != sizeof(header)) {
warnx("Score file %s: read: unexpected EOF", _PATH_SCOREFILE);
@@ -470,13 +469,12 @@
if (lseek(sd, 0, SEEK_SET) < 0) {
/* ? */
warn("Score file %s: lseek", _PATH_SCOREFILE);
- goto fail;
+ goto sdfail;
}
if (ftruncate(sd, 0) == 0) {
result = 0;
} else {
- close(sd);
- goto fail;
+ goto sdfail;
}
}
@@ -501,17 +499,17 @@
} else {
warnx("Score file %s: Unknown endian tag %u",
_PATH_SCOREFILE, header.hsh_endiantag);
- goto fail;
+ goto sdfail;
}
if (header.hsh_version != HSH_VERSION) {
warnx("Score file %s: Unknown version code %u",
_PATH_SCOREFILE, header.hsh_version);
- goto fail;
+ goto sdfail;
}
if (readscores(sd, doflip) < 0) {
- goto fail;
+ goto sdfail;
}
} else {
/*
@@ -521,7 +519,7 @@
result = scorefile_probe(sd);
if (lseek(sd, 0, SEEK_SET) < 0) {
warn("Score file %s: lseek", _PATH_SCOREFILE);
- goto fail;
+ goto sdfail;
}
switch (result) {
case SCOREFILE_CURRENT:
@@ -543,10 +541,10 @@
result = readscores50(sd, 1 /* do flip */);
break;
default:
- goto fail;
+ goto sdfail;
}
if (result < 0) {
- goto fail;
+ goto sdfail;
}
}
}
@@ -559,6 +557,8 @@
return;
+sdfail:
+ close(sd);
fail:
if (fdp != NULL) {
*fdp = -1;
Home |
Main Index |
Thread Index |
Old Index