Index: lib/filesys.cpp =================================================================== --- lib/filesys.cpp.orig 2011-05-16 18:13:03.000000000 +0200 +++ lib/filesys.cpp 2011-05-16 18:49:23.426248908 +0200 @@ -36,6 +36,7 @@ #include #include #include +#include #ifdef HAVE_SYS_RESOURCE_H #include @@ -371,7 +372,8 @@ int dir_size(const char* dirpath, double } while (FindNextFileA(hFind, &findData)); ::FindClose(hFind); #else - char filename[256], subdir[256]; + char filename[PATH_MAX]; + char *subdir; int retval=0; DIRREF dirp; double x; @@ -382,7 +384,7 @@ int dir_size(const char* dirpath, double while (1) { retval = dir_scan(filename, dirp, sizeof(filename)); if (retval) break; - sprintf(subdir, "%s/%s", dirpath, filename); + asprintf(&subdir, "%s/%s", dirpath, filename); if (is_dir(subdir)) { if (recurse) { @@ -395,6 +397,9 @@ int dir_size(const char* dirpath, double if (retval) continue; size += x; } + + if(subdir != NULL) + free(subdir); } dir_close(dirp); #endif