aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extension/ChangeLog5
-rw-r--r--extension/readdir.c8
2 files changed, 9 insertions, 4 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 5e39135b..2023a76e 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,8 @@
+2012-07-27 Andrew J. Schorr <aschorr@telemetry-investments.com>
+
+ * readdir.c (dir_get_record): If readdir fails, set errcode. Otherwise,
+ don't bother to set errcode.
+
2012-07-27 Arnold D. Robbins <arnold@skeeve.com>
* readdir.c (dir_take_control_of): Fix typo for case where
diff --git a/extension/readdir.c b/extension/readdir.c
index c2b6cbda..f8580568 100644
--- a/extension/readdir.c
+++ b/extension/readdir.c
@@ -130,10 +130,8 @@ dir_get_record(char **out, struct iobuf_public *iobuf, int *errcode)
/*
* The caller sets *errcode to 0, so we should set it only if an
- * error occurs. Except that the compiler complains that it
- * is unused, so we set it anyways.
+ * error occurs.
*/
- *errcode = 0; /* keep the compiler happy */
if (out == NULL || iobuf == NULL || iobuf->opaque == NULL)
return EOF;
@@ -142,8 +140,10 @@ dir_get_record(char **out, struct iobuf_public *iobuf, int *errcode)
the_dir = (open_directory_t *) iobuf->opaque;
dp = the_dir->dp;
dirent = readdir(dp);
- if (dirent == NULL)
+ if (dirent == NULL) {
+ *errcode = errno; /* in case there was an error */
return EOF;
+ }
if (do_ftype)
sprintf(the_dir->buf, "%ld/%s/%s",