diff --git a/renderdoc/os/posix/android/android_process.cpp b/renderdoc/os/posix/android/android_process.cpp index 7a4e8b4ed..73e357cf7 100644 --- a/renderdoc/os/posix/android/android_process.cpp +++ b/renderdoc/os/posix/android/android_process.cpp @@ -186,6 +186,8 @@ uint64_t Process::GetMemoryUsage() char line[512] = {}; fgets(line, 511, f); + FileIO::fclose(f); + uint32_t vmPages = 0; int num = sscanf(line, "%u", &vmPages); diff --git a/renderdoc/os/posix/ggp/ggp_process.cpp b/renderdoc/os/posix/ggp/ggp_process.cpp index 8b64d8548..68e2bc867 100644 --- a/renderdoc/os/posix/ggp/ggp_process.cpp +++ b/renderdoc/os/posix/ggp/ggp_process.cpp @@ -211,6 +211,8 @@ uint64_t Process::GetMemoryUsage() char line[512] = {}; fgets(line, 511, f); + FileIO::fclose(f); + uint32_t vmPages = 0; int num = sscanf(line, "%u", &vmPages); diff --git a/renderdoc/os/posix/linux/linux_process.cpp b/renderdoc/os/posix/linux/linux_process.cpp index 81192e746..504a25d83 100644 --- a/renderdoc/os/posix/linux/linux_process.cpp +++ b/renderdoc/os/posix/linux/linux_process.cpp @@ -675,11 +675,13 @@ uint64_t Process::GetMemoryUsage() char line[512] = {}; fgets(line, 511, f); - uint32_t vmPages = 0; - int num = sscanf(line, "%u", &vmPages); + FileIO::fclose(f); - if(num == 1 && vmPages > 0) - return vmPages * (uint64_t)sysconf(_SC_PAGESIZE); + uint32_t rssPages = 0; + int num = sscanf(line, "%*u %u", &rssPages); + + if(num == 1 && rssPages > 0) + return rssPages * (uint64_t)sysconf(_SC_PAGESIZE); return 0; } diff --git a/util/test/demos/linux/linux_platform.cpp b/util/test/demos/linux/linux_platform.cpp index 76a21822b..724091693 100644 --- a/util/test/demos/linux/linux_platform.cpp +++ b/util/test/demos/linux/linux_platform.cpp @@ -39,11 +39,13 @@ uint64_t GetMemoryUsage() char line[512] = {}; fgets(line, 511, f); - uint32_t vmPages = 0; - int num = sscanf(line, "%u", &vmPages); + fclose(f); - if(num == 1 && vmPages > 0) - return vmPages * (uint64_t)sysconf(_SC_PAGESIZE); + uint32_t rssPages = 0; + int num = sscanf(line, "%*u %u", &rssPages); + + if(num == 1 && rssPages > 0) + return rssPages * (uint64_t)sysconf(_SC_PAGESIZE); return 0; }