aboutsummaryrefslogtreecommitdiffstats
path: root/extension/readdir.c
diff options
context:
space:
mode:
authorAndrew J. Schorr <aschorr@telemetry-investments.com>2012-07-27 12:40:01 -0400
committerAndrew J. Schorr <aschorr@telemetry-investments.com>2012-07-27 12:40:01 -0400
commitdce685318154027d30f8dad8df796e1e12436765 (patch)
treeb59cf3eddbeda7ba6ed810ffaec60f599db10d2b /extension/readdir.c
parent913a0f88f5cfff1f139bb05ffd4a0a9a516ebdde (diff)
downloadegawk-dce685318154027d30f8dad8df796e1e12436765.tar.gz
egawk-dce685318154027d30f8dad8df796e1e12436765.tar.bz2
egawk-dce685318154027d30f8dad8df796e1e12436765.zip
Fix last: must initialize errno to 0 before calling readdir.
Diffstat (limited to 'extension/readdir.c')
-rw-r--r--extension/readdir.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/extension/readdir.c b/extension/readdir.c
index f8580568..2818d601 100644
--- a/extension/readdir.c
+++ b/extension/readdir.c
@@ -139,6 +139,10 @@ dir_get_record(char **out, struct iobuf_public *iobuf, int *errcode)
set_RT((awk_value_t *) & null_val);
the_dir = (open_directory_t *) iobuf->opaque;
dp = the_dir->dp;
+ /*
+ * Initialize errno, since readdir does not set it to zero on EOF.
+ */
+ errno = 0;
dirent = readdir(dp);
if (dirent == NULL) {
*errcode = errno; /* in case there was an error */