Browse Source

Fix parsing of linux memory

If process name contains a space, this parsing fails for no good reason.
v0.7.4-release
Vitali Lovich 15 years ago
committed by Ryan Dahl
parent
commit
fb8830a64f
  1. 17
      src/platform_linux.cc

17
src/platform_linux.cc

@ -47,11 +47,26 @@ int OS::GetMemory(size_t *rss, size_t *vsize) {
int itmp; int itmp;
char ctmp; char ctmp;
size_t page_size = getpagesize(); size_t page_size = getpagesize();
char *cbuf;
bool foundExeEnd;
/* PID */ /* PID */
if (fscanf(f, "%d ", &itmp) == 0) goto error; /* coverity[secure_coding] */ if (fscanf(f, "%d ", &itmp) == 0) goto error; /* coverity[secure_coding] */
/* Exec file */ /* Exec file */
if (fscanf (f, "%s ", buf) == 0) goto error; /* coverity[secure_coding] */ cbuf = buf;
foundExeEnd = false;
if (fscanf (f, "%c", cbuf++) == 0) goto error; // (
while (1) {
if (fscanf(f, "%c", cbuf) == 0) goto error;
if (*cbuf == ')') {
foundExeEnd = true;
} else if (foundExeEnd && *cbuf == ' ') {
*cbuf = 0;
break;
}
cbuf++;
}
/* State */ /* State */
if (fscanf (f, "%c ", &ctmp) == 0) goto error; /* coverity[secure_coding] */ if (fscanf (f, "%c ", &ctmp) == 0) goto error; /* coverity[secure_coding] */
/* Parent process */ /* Parent process */

Loading…
Cancel
Save