diff --git a/src/client/linux/minidump_writer/linux_ptrace_dumper.cc b/src/client/linux/minidump_writer/linux_ptrace_dumper.cc index 5591067a..3863d79f 100644 --- a/src/client/linux/minidump_writer/linux_ptrace_dumper.cc +++ b/src/client/linux/minidump_writer/linux_ptrace_dumper.cc @@ -112,13 +112,13 @@ bool LinuxPtraceDumper::BuildProcPath(char* path, pid_t pid, if (node_len == 0) return false; - const unsigned pid_len = my_int_len(pid); + const unsigned pid_len = my_uint_len(pid); const size_t total_length = 6 + pid_len + 1 + node_len; if (total_length >= NAME_MAX) return false; my_memcpy(path, "/proc/", 6); - my_itos(path + 6, pid, pid_len); + my_uitos(path + 6, pid, pid_len); path[6 + pid_len] = '/'; my_memcpy(path + 6 + pid_len + 1, node, node_len); path[total_length] = '\0'; diff --git a/src/common/linux/linux_libc_support.cc b/src/common/linux/linux_libc_support.cc index 39e2aa1e..845729c9 100644 --- a/src/common/linux/linux_libc_support.cc +++ b/src/common/linux/linux_libc_support.cc @@ -95,9 +95,8 @@ bool my_strtoui(int* result, const char* s) { return true; } -// Return the length of the given, non-negative integer when expressed in base -// 10. -unsigned my_int_len(intmax_t i) { +// Return the length of the given unsigned integer when expressed in base 10. +unsigned my_uint_len(uintmax_t i) { if (!i) return 1; @@ -110,13 +109,13 @@ unsigned my_int_len(intmax_t i) { return len; } -// Convert a non-negative integer to a string +// Convert an unsigned integer to a string // output: (output) the resulting string is written here. This buffer must be -// large enough to hold the resulting string. Call |my_int_len| to get the +// large enough to hold the resulting string. Call |my_uint_len| to get the // required length. -// i: the non-negative integer to serialise. -// i_len: the length of the integer in base 10 (see |my_int_len|). -void my_itos(char* output, intmax_t i, unsigned i_len) { +// i: the unsigned integer to serialise. +// i_len: the length of the integer in base 10 (see |my_uint_len|). +void my_uitos(char* output, uintmax_t i, unsigned i_len) { for (unsigned index = i_len; index; --index, i /= 10) output[index - 1] = '0' + (i % 10); } diff --git a/src/common/linux/linux_libc_support.h b/src/common/linux/linux_libc_support.h index b2f47af8..011048f8 100644 --- a/src/common/linux/linux_libc_support.h +++ b/src/common/linux/linux_libc_support.h @@ -52,17 +52,16 @@ extern int my_strncmp(const char* a, const char* b, size_t len); // Return true iff successful. extern bool my_strtoui(int* result, const char* s); -// Return the length of the given, non-negative integer when expressed in base -// 10. -extern unsigned my_int_len(intmax_t i); +// Return the length of the given unsigned integer when expressed in base 10. +extern unsigned my_uint_len(uintmax_t i); -// Convert a non-negative integer to a string +// Convert an unsigned integer to a string // output: (output) the resulting string is written here. This buffer must be // large enough to hold the resulting string. Call |my_int_len| to get the // required length. -// i: the non-negative integer to serialise. -// i_len: the length of the integer in base 10 (see |my_int_len|). -extern void my_itos(char* output, intmax_t i, unsigned i_len); +// i: the unsigned integer to serialise. +// i_len: the length of the integer in base 10 (see |my_uint_len|). +extern void my_uitos(char* output, uintmax_t i, unsigned i_len); extern const char* my_strchr(const char* haystack, char needle); diff --git a/src/common/linux/linux_libc_support_unittest.cc b/src/common/linux/linux_libc_support_unittest.cc index 7f974af8..2a9694ce 100644 --- a/src/common/linux/linux_libc_support_unittest.cc +++ b/src/common/linux/linux_libc_support_unittest.cc @@ -89,35 +89,41 @@ TEST(LinuxLibcSupportTest, strtoui) { ASSERT_EQ(result, 123); } -TEST(LinuxLibcSupportTest, int_len) { - ASSERT_EQ(my_int_len(0), 1); - ASSERT_EQ(my_int_len(2), 1); - ASSERT_EQ(my_int_len(5), 1); - ASSERT_EQ(my_int_len(9), 1); - ASSERT_EQ(my_int_len(10), 2); - ASSERT_EQ(my_int_len(99), 2); - ASSERT_EQ(my_int_len(100), 3); - ASSERT_EQ(my_int_len(101), 3); - ASSERT_EQ(my_int_len(1000), 4); +TEST(LinuxLibcSupportTest, uint_len) { + ASSERT_EQ(my_uint_len(0), 1); + ASSERT_EQ(my_uint_len(2), 1); + ASSERT_EQ(my_uint_len(5), 1); + ASSERT_EQ(my_uint_len(9), 1); + ASSERT_EQ(my_uint_len(10), 2); + ASSERT_EQ(my_uint_len(99), 2); + ASSERT_EQ(my_uint_len(100), 3); + ASSERT_EQ(my_uint_len(101), 3); + ASSERT_EQ(my_uint_len(1000), 4); + // 0xFFFFFFFFFFFFFFFF + ASSERT_EQ(my_uint_len(18446744073709551615LLU), 20); } -TEST(LinuxLibcSupportTest, itos) { - char buf[10]; +TEST(LinuxLibcSupportTest, uitos) { + char buf[32]; - my_itos(buf, 0, 1); + my_uitos(buf, 0, 1); ASSERT_EQ(0, memcmp(buf, "0", 1)); - my_itos(buf, 1, 1); + my_uitos(buf, 1, 1); ASSERT_EQ(0, memcmp(buf, "1", 1)); - my_itos(buf, 10, 2); + my_uitos(buf, 10, 2); ASSERT_EQ(0, memcmp(buf, "10", 2)); - my_itos(buf, 63, 2); + my_uitos(buf, 63, 2); ASSERT_EQ(0, memcmp(buf, "63", 2)); - my_itos(buf, 101, 3); + my_uitos(buf, 101, 3); ASSERT_EQ(0, memcmp(buf, "101", 2)); + + // 0xFFFFFFFFFFFFFFFF + my_uitos(buf, 18446744073709551615LLU, 20); + ASSERT_EQ(0, memcmp(buf, "18446744073709551615", 20)); } TEST(LinuxLibcSupportTest, strchr) {