Index: third_party/android_crazy_linker/src/src/crazy_linker_proc_maps.cpp |
diff --git a/third_party/android_crazy_linker/src/src/crazy_linker_proc_maps.cpp b/third_party/android_crazy_linker/src/src/crazy_linker_proc_maps.cpp |
index 104f609df48aac2c99608af67086ece4ed058007..713870bea6ccbe32af090136c51c8e14534f4f89 100644 |
--- a/third_party/android_crazy_linker/src/src/crazy_linker_proc_maps.cpp |
+++ b/third_party/android_crazy_linker/src/src/crazy_linker_proc_maps.cpp |
@@ -56,10 +56,15 @@ bool ParseProcMapsLine(const char* line, |
p++; |
// find start and end of current token, and compute start of |
- // next search. |
+ // next search. The result of memchr(_,_,0) is undefined, treated as |
+ // not-found. |
const char* tok_start = p; |
- const char* tok_end = |
- static_cast<const char*>(memchr(p, separator, line_end - p)); |
+ const size_t range = line_end - p; |
+ const char* tok_end; |
+ if (range > 0) |
+ tok_end = static_cast<const char*>(memchr(p, separator, range)); |
+ else |
+ tok_end = NULL; |
rmcilroy
2014/07/22 09:16:36
Optional suggestion - I'm not sure if the crazy li
|
if (!tok_end) { |
tok_end = line_end; |
p = line_end; |