From c15818546258359c64db2bfe7158fa26e95fcae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se> Date: Tue, 1 Oct 2002 17:31:54 +0200 Subject: [PATCH] * examples/io.c (read_file): Bug fix, used to overwrite pointer. Rev: src/nettle/examples/io.c:1.2 --- examples/io.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/examples/io.c b/examples/io.c index 8ce412c0..5584c110 100644 --- a/examples/io.c +++ b/examples/io.c @@ -52,17 +52,18 @@ werror(const char *format, ...) #define MIN(a,b) (((a) < (b)) ? (a) : (b)) unsigned -read_file(const char *name, unsigned max_size, char **buffer) +read_file(const char *name, unsigned max_size, char **contents) { unsigned size; unsigned done; + char *buffer; FILE *f; f = fopen(name, "rb"); if (!f) return 0; - *buffer = NULL; + buffer = NULL; if (max_size && max_size < 100) size = max_size; @@ -75,22 +76,22 @@ read_file(const char *name, unsigned max_size, char **buffer) { char *p; - if (size > max_size) + if (max_size && size > max_size) size = max_size; /* Space for terminating NUL */ - p = realloc(*buffer, size + 1); + p = realloc(buffer, size + 1); if (!p) { fail: fclose(f); - free(*buffer); - *buffer = NULL; + free(buffer); + *contents = NULL; return 0; } - *buffer = p; + buffer = p; done += fread(buffer + done, 1, size - done, f); if (ferror(f)) @@ -100,7 +101,9 @@ read_file(const char *name, unsigned max_size, char **buffer) fclose(f); /* NUL-terminate the data. */ - (*buffer)[done] = '\0'; + buffer[done] = '\0'; + *contents = buffer; + return done; } -- GitLab