Use a dynamically allocated buffer to read /proc/cpuinfo to handle computers

with a lot of CPUs.

https://bugzilla.gnome.org/show_bug.cgi?id=323354
This commit is contained in:
Benoît Dejean
2017-01-21 09:49:22 +01:00
parent d2bc9b4331
commit b0ab056e99

View File

@@ -36,16 +36,20 @@ static glibtop_sysinfo sysinfo = { .flags = 0 };
static void static void
init_sysinfo (glibtop *server) init_sysinfo (glibtop *server)
{ {
char buffer [65536]; char* buffer;
gchar ** processors; gchar ** processors;
if(G_LIKELY(sysinfo.flags)) return; if(G_LIKELY(sysinfo.flags)) return;
file_to_buffer(server, buffer, sizeof buffer, FILENAME); if (!g_file_get_contents(FILENAME, &buffer, NULL, NULL)) {
glibtop_error_io_r(server, "g_file_get_contents(%s)", FILENAME);
}
/* cpuinfo records are seperated by a blank line */ /* cpuinfo records are seperated by a blank line */
processors = g_strsplit(buffer, "\n\n", 0); processors = g_strsplit(buffer, "\n\n", 0);
g_free(buffer);
for(sysinfo.ncpu = 0; for(sysinfo.ncpu = 0;
sysinfo.ncpu < GLIBTOP_NCPU && processors[sysinfo.ncpu] && *processors[sysinfo.ncpu]; sysinfo.ncpu < GLIBTOP_NCPU && processors[sysinfo.ncpu] && *processors[sysinfo.ncpu];
sysinfo.ncpu++) { sysinfo.ncpu++) {