--- slocate-2.7/main.c.long 2005-08-09 01:04:39.000000000 +0200 +++ slocate-2.7/main.c 2005-08-09 01:08:51.000000000 +0200 @@ -1078,8 +1078,12 @@ if (!file) break; - - if (file->fts_info != FTS_DP && file->fts_info != FTS_NS) { + + /* fts_read () from glibc fails with EOVERFLOW when fts_pathlen + would overflow the u_short file->fts_pathlen. */ + if (file->fts_info == FTS_D && file->fts_pathlen > 32768) + fts_set(dir,file,FTS_SKIP); + else if (file->fts_info != FTS_DP && file->fts_info != FTS_NS) { if ((EXCLUDE && !match_exclude(file->fts_path,"")) || !EXCLUDE) frcode(fd,file->fts_path,"");