]> git.itanic.dy.fi Git - sdl-planets/commitdiff
random.c: Close file handles, even on error conditions
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 20 Mar 2010 15:15:20 +0000 (17:15 +0200)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Sat, 20 Mar 2010 15:15:20 +0000 (17:15 +0200)
Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
random.c

index b366858a9e86dfa6b5740855adc4117dfb012d14..12bfb4b0596004b4924f1ca101f360e065a6d91c 100644 (file)
--- a/random.c
+++ b/random.c
@@ -25,7 +25,8 @@ unsigned int get_random(void)
                error = errno;
                fprintf(stderr, "Error opening file %s: %s\n",
                        RND_DEV, strerror(error));
-               return -1;
+               ret = error;
+               goto err;
        }
 
        do {
@@ -36,15 +37,20 @@ unsigned int get_random(void)
                        error = errno;
                        fprintf(stderr, "Error reading file %s: %s\n",
                                RND_DEV, strerror(error));
-                       goto out;
+                       ret = error;
+                       goto err;
                }
 
                i += ret;
        } while (i < RAND_BUF_SIZE * sizeof(rndbuf[0]));
        index = 0;
- out:
+out:
+       close(fd);
        return get_random();
+
+err:
        close(fd);
+       return ret;
 }
 
 double get_random_double(void)