diff --git a/src/frontend/resource.c b/src/frontend/resource.c index 8663a4456..2f98162af 100644 --- a/src/frontend/resource.c +++ b/src/frontend/resource.c @@ -504,8 +504,12 @@ static int get_procm(struct proc_mem *memall) { FILE *fp; char buffer[1024]; size_t bytes_read; + long sz; /* page size */ - long sz = sysconf(_SC_PAGESIZE); + if ((sz = sysconf(_SC_PAGESIZE)) == -1) { + perror("sysconf() error"); + return 0; + } if ((fp = fopen("/proc/self/statm", "r")) == NULL) { perror("fopen(\"/proc/%d/statm\")"); return 0; @@ -518,13 +522,13 @@ static int get_procm(struct proc_mem *memall) { sscanf(buffer, "%llu %llu %llu %llu %llu %llu %llu", &memall->size, &memall->resident, &memall->shared, &memall->trs, &memall->drs, &memall->lrs, &memall->dt); /* scale by page size */ - memall->size *= (double)sz; - memall->resident *= (double)sz; - memall->shared *= (double)sz; - memall->trs *= (double)sz; - memall->drs *= (double)sz; - memall->lrs *= (double)sz; - memall->dt *= (double)sz; + memall->size *= (long long unsigned)sz; + memall->resident *= (long long unsigned)sz; + memall->shared *= (long long unsigned)sz; + memall->trs *= (long long unsigned)sz; + memall->drs *= (long long unsigned)sz; + memall->lrs *= (long long unsigned)sz; + memall->dt *= (long long unsigned)sz; #endif /* HAVE_WIN32 */ return 1;