From 634bb8d895cc8e1f11b7866ef5dfdf9f79ba2ee6 Mon Sep 17 00:00:00 2001 From: Joel Rosdahl Date: Sun, 12 Sep 2010 16:33:16 +0200 Subject: [PATCH] Stat file to get size hint in read_file() --- util.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/util.c b/util.c index bb3d909d9..1cf919260 100644 --- a/util.c +++ b/util.c @@ -1076,12 +1076,21 @@ bool read_file(const char *path, size_t size_hint, char **data, size_t *size) { int fd, ret; - size_t pos = 0, allocated = (size_hint == 0) ? 16384 : size_hint; + size_t pos = 0, allocated; + + if (size_hint == 0) { + struct stat st; + if (stat(path, &st) == 0) { + size_hint = st.st_size; + } + } + size_hint = (size_hint < 1024) ? 1024 : size_hint; fd = open(path, O_RDONLY); if (fd == -1) { return false; } + allocated = size_hint; *data = x_malloc(allocated); ret = 0; do { -- 2.47.3