Clean up /proc/<pid>/maps sscanfs.
sscanf will swallow whitespace for us.
Change-Id: I59931cbad00f0144fd33ed4749ac0aaad15e6de6
diff --git a/libc/bionic/debug_mapinfo.cpp b/libc/bionic/debug_mapinfo.cpp
index de72cb2..6fb8ebe 100644
--- a/libc/bionic/debug_mapinfo.cpp
+++ b/libc/bionic/debug_mapinfo.cpp
@@ -50,14 +50,11 @@
uintptr_t offset;
char permissions[4];
int name_pos;
- if (sscanf(line, "%" PRIxPTR "-%" PRIxPTR " %4s %" PRIxPTR " %*x:%*x %*d%n", &start,
+ if (sscanf(line, "%" PRIxPTR "-%" PRIxPTR " %4s %" PRIxPTR " %*x:%*x %*d %n", &start,
&end, permissions, &offset, &name_pos) < 2) {
return NULL;
}
- while (isspace(line[name_pos])) {
- name_pos += 1;
- }
const char* name = line + name_pos;
size_t name_len = strlen(name);
if (name_len && name[name_len - 1] == '\n') {
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 11afad1..d61c1cd 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -1163,9 +1163,9 @@
char line[BUFSIZ];
while (fgets(line, sizeof(line), fp) != NULL) {
uintptr_t lo, hi;
- char name[10];
- sscanf(line, "%" PRIxPTR "-%" PRIxPTR " %*4s %*x %*x:%*x %*d %10s", &lo, &hi, name);
- if (strcmp(name, "[stack]") == 0) {
+ int name_pos;
+ sscanf(line, "%" PRIxPTR "-%" PRIxPTR " %*4s %*x %*x:%*x %*d %n", &lo, &hi, &name_pos);
+ if (strcmp(line + name_pos, "[stack]\n") == 0) {
maps_stack_hi = reinterpret_cast<void*>(hi);
break;
}