--- bzr-1.9/bzrlib/_readdir_pyx.pyx 2008-11-07 07:21:39.000000000 +0100 +++ bzr-1.9-patched/bzrlib/_readdir_pyx.pyx 2008-11-20 00:22:54.470233000 +0100 @@ -37,6 +37,9 @@ cdef extern from 'unistd.h': int chdir(char *path) char *getcwd(char *, int size) + long pathconf(char *path, int name) + enum dummy: + _PC_PATH_MAX cdef extern from 'stdlib.h': void *malloc(int) @@ -280,9 +283,19 @@ cdef int stat_result cdef _Stat statvalue cdef char *cwd + cdef char *cwd_ptr + cdef long cwd_size global errno - cwd = getcwd(NULL, 0) + cwd_size = pathconf(".", _PC_PATH_MAX) + cwd = malloc(cwd_size) + if cwd == NULL: + raise OSError(errno, strerror(errno)) + + cwd_ptr = getcwd(cwd, cwd_size) + if cwd_ptr == NULL: + raise OSError(errno, strerror(errno)) + if -1 == chdir(path): raise OSError(errno, strerror(errno)) the_dir = opendir(".")