diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2017-06-23 12:45:16 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2017-06-23 12:45:16 +0300 |
commit | 5ea4224acd6effc77359d42436de4804b86f1112 (patch) | |
tree | 9d4936e21342b71fd43de7cac311822677caad98 /extension/readfile.c | |
parent | 231cb5df34699fd98001e2e124d73da5d2f795f9 (diff) | |
parent | 44e29458a6355ad64e8d89676a441b224ce76cbc (diff) | |
download | egawk-5ea4224acd6effc77359d42436de4804b86f1112.tar.gz egawk-5ea4224acd6effc77359d42436de4804b86f1112.tar.bz2 egawk-5ea4224acd6effc77359d42436de4804b86f1112.zip |
Merge branch 'master' into feature/fix-comments
Diffstat (limited to 'extension/readfile.c')
-rw-r--r-- | extension/readfile.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/extension/readfile.c b/extension/readfile.c index fb1a376b..b600f27a 100644 --- a/extension/readfile.c +++ b/extension/readfile.c @@ -73,25 +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; } emalloc(text, char *, sbuf->st_size + 1, "do_readfile"); - memset(text, '\0', sbuf->st_size + 1); - 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; } |