Index: lib/filesys.cpp =================================================================== --- lib/filesys.cpp.orig +++ lib/filesys.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #ifdef HAVE_SYS_RESOURCE_H #include @@ -400,7 +401,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; @@ -411,7 +413,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) { @@ -424,6 +426,9 @@ int dir_size(const char* dirpath, double if (retval) continue; size += x; } + + if(subdir != NULL) + free(subdir); } dir_close(dirp); #endif