*** Python-2.5/Modules/posixmodule.c 2006-09-06 02:04:06.000000000 -0400 --- Python-2.5-patched/Modules/posixmodule.c 2006-12-04 17:31:57.000000000 -0500 *************** *** 2044,2054 **** return NULL; } for (;;) { Py_BEGIN_ALLOW_THREADS ep = readdir(dirp); Py_END_ALLOW_THREADS ! if (ep == NULL) break; if (ep->d_name[0] == '.' && (NAMLEN(ep) == 1 || (ep->d_name[1] == '.' && NAMLEN(ep) == 2))) --- 2044,2063 ---- return NULL; } for (;;) { + errno = 0; Py_BEGIN_ALLOW_THREADS ep = readdir(dirp); Py_END_ALLOW_THREADS ! if (ep == NULL) { ! if (errno != 0) { ! closedir(dirp); ! Py_DECREF(d); ! return posix_error_with_allocated_filename(name); ! } ! } ! else { break; + } if (ep->d_name[0] == '.' && (NAMLEN(ep) == 1 || (ep->d_name[1] == '.' && NAMLEN(ep) == 2))) *************** *** 2085,2096 **** } Py_DECREF(v); } - if (errno != 0 && d != NULL) { - /* readdir() returned NULL and set errno */ - closedir(dirp); - Py_DECREF(d); - return posix_error_with_allocated_filename(name); - } closedir(dirp); PyMem_Free(name); --- 2094,2099 ----