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@1486 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
Liu.andrew.x@gmail.com 2015-08-13 20:13:55 +00:00
parent cde8616abf
commit 8794e39888
2 changed files with 6 additions and 6 deletions

View File

@ -23,8 +23,8 @@ struct MappedMemoryRegion {
};
// 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;

View File

@ -61,10 +61,10 @@ bool ParseProcMaps(const std::string& input,
// 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",
&region.start, &region.end, permissions, &region.offset,
&region.major_device, &region.minor_device, &region.inode,
&path_index) < 7) {
if (sscanf(line, "%" SCNx64 "-%" SCNx64 " %4c %" SCNx64" %hhx:%hhx %"
SCNd64 " %n", &region.start, &region.end, permissions,
&region.offset, &region.major_device, &region.minor_device,
&region.inode, &path_index) < 7) {
BPLOG(ERROR) << "sscanf failed for line: " << line;
return false;
}