+2017-12-29 Aurelien Jarno <aurelien@aurel32.net>
+
+ [BZ #17804]
+ * dirent/scandir-tail.c (SCANDIR_TAIL): Move __set_errno (0) at the
+ end of the loop. Improve comments.
+
2017-12-29 Zack Weinberg <zackw@panix.com>
[BZ #22615]
{
int selected = (*select) (d);
- /* The SELECT function might have changed errno. It was
- zero before and it need to be again to make the later
- tests work. */
+ /* The SELECT function might have set errno to non-zero on
+ success. It was zero before and it needs to be again to
+ make the later tests work. */
__set_errno (0);
if (!selected)
continue;
}
- else
- __set_errno (0);
if (__glibc_unlikely (c.cnt == vsize))
{
if (vnew == NULL)
break;
v[c.cnt++] = (DIRENT_TYPE *) memcpy (vnew, d, dsize);
+
+ /* Ignore errors from readdir, malloc or realloc. These functions
+ might have set errno to non-zero on success. It was zero before
+ and it needs to be again to make the latter tests work. */
+ __set_errno (0);
}
if (__glibc_likely (errno == 0))