Fix format specifier in proc maps to support 32-bit architectures.
R=ivanpe@chromium.org
Review URL: https://codereview.chromium.org/1288323003
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk/src@1486 4c0a9323-5329-0410-9bdc-e9ce6186880e
diff --git a/google_breakpad/processor/proc_maps_linux.h b/google_breakpad/processor/proc_maps_linux.h
index 22f9f6a..b8e6eb9 100644
--- a/google_breakpad/processor/proc_maps_linux.h
+++ b/google_breakpad/processor/proc_maps_linux.h
@@ -23,8 +23,8 @@
};
// The address range [start,end) of mapped memory.
- uintptr_t start;
- uintptr_t end;
+ uint64_t start;
+ uint64_t end;
// Byte offset into |path| of the range mapped into memory.
uint64_t offset;
diff --git a/processor/proc_maps_linux.cc b/processor/proc_maps_linux.cc
index 1954cc8..3ba767f 100644
--- a/processor/proc_maps_linux.cc
+++ b/processor/proc_maps_linux.cc
@@ -61,10 +61,10 @@
// The final %n term captures the offset in the input string, which is used
// to determine the path name. It *does not* increment the return value.
// Refer to man 3 sscanf for details.
- if (sscanf(line, "%lx-%lx %4c %lx %hhx:%hhx %ld %n",
- ®ion.start, ®ion.end, permissions, ®ion.offset,
- ®ion.major_device, ®ion.minor_device, ®ion.inode,
- &path_index) < 7) {
+ if (sscanf(line, "%" SCNx64 "-%" SCNx64 " %4c %" SCNx64" %hhx:%hhx %"
+ SCNd64 " %n", ®ion.start, ®ion.end, permissions,
+ ®ion.offset, ®ion.major_device, ®ion.minor_device,
+ ®ion.inode, &path_index) < 7) {
BPLOG(ERROR) << "sscanf failed for line: " << line;
return false;
}