Fix parsing of linux memory

If process name contains a space, this parsing fails for no good reason.
This commit is contained in:
Vitali Lovich
2010-07-16 01:07:43 -07:00
committed by Ryan Dahl
parent 604f4fdf8c
commit fb8830a64f

View File

@@ -47,11 +47,26 @@ int OS::GetMemory(size_t *rss, size_t *vsize) {
int itmp;
char ctmp;
size_t page_size = getpagesize();
char *cbuf;
bool foundExeEnd;
/* PID */
if (fscanf(f, "%d ", &itmp) == 0) goto error; /* coverity[secure_coding] */
/* 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 */
if (fscanf (f, "%c ", &ctmp) == 0) goto error; /* coverity[secure_coding] */
/* Parent process */