summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extension/ChangeLog6
-rw-r--r--extension/readfile.c14
2 files changed, 12 insertions, 8 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 378de373..9574865c 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,9 @@
+2017-06-22 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * readfile.c (read_file_to_buffer): Use emalloc instead of ezalloc,
+ since there's no need to initialize the memory to zero before
+ overwriting it with the file's contents.
+
2017-06-21 Andrew J. Schorr <aschorr@telemetry-investments.com>
* filefuncs.c (do_fts): Replace emalloc+memset with ezalloc.
diff --git a/extension/readfile.c b/extension/readfile.c
index f470237b..b600f27a 100644
--- a/extension/readfile.c
+++ b/extension/readfile.c
@@ -73,24 +73,22 @@ int plugin_is_GPL_compatible;
static char *
read_file_to_buffer(int fd, const struct stat *sbuf)
{
- char *text = NULL;
- int ret;
+ char *text;
if ((sbuf->st_mode & S_IFMT) != S_IFREG) {
errno = EINVAL;
update_ERRNO_int(errno);
- goto done;
+ return NULL;
}
- ezalloc(text, char *, sbuf->st_size + 1, "do_readfile");
+ emalloc(text, char *, sbuf->st_size + 1, "do_readfile");
- if ((ret = read(fd, text, sbuf->st_size)) != sbuf->st_size) {
+ if (read(fd, text, sbuf->st_size) != sbuf->st_size) {
update_ERRNO_int(errno);
gawk_free(text);
- text = NULL;
- /* fall through to return */
+ return NULL;
}
-done:
+ text[sbuf->st_size] = '\0';
return text;
}