From 93c112c587269e778494e828b23e63ae70bd451e Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Wed, 9 Apr 2025 13:32:34 -0700 Subject: [PATCH] Fix "unsafe narrowing" in absl for Emscripten Addresses failures with -Wsign-compare. PiperOrigin-RevId: 745713553 Change-Id: I8053c3cc097355ce3606a30a7546d92594438d37 --- absl/base/internal/low_level_alloc.cc | 2 +- absl/debugging/internal/stacktrace_emscripten-inl.inc | 8 +++++--- absl/debugging/symbolize_emscripten.inc | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/absl/base/internal/low_level_alloc.cc b/absl/base/internal/low_level_alloc.cc index 2e30701e..158b6098 100644 --- a/absl/base/internal/low_level_alloc.cc +++ b/absl/base/internal/low_level_alloc.cc @@ -330,7 +330,7 @@ size_t GetPageSize() { GetSystemInfo(&system_info); return std::max(system_info.dwPageSize, system_info.dwAllocationGranularity); #elif defined(__wasm__) || defined(__asmjs__) || defined(__hexagon__) - return getpagesize(); + return static_cast(getpagesize()); #else return static_cast(sysconf(_SC_PAGESIZE)); #endif diff --git a/absl/debugging/internal/stacktrace_emscripten-inl.inc b/absl/debugging/internal/stacktrace_emscripten-inl.inc index 6689300f..2f39c705 100644 --- a/absl/debugging/internal/stacktrace_emscripten-inl.inc +++ b/absl/debugging/internal/stacktrace_emscripten-inl.inc @@ -24,6 +24,7 @@ #include #include +#include #include #include "absl/base/attributes.h" @@ -77,7 +78,8 @@ static int UnwindImpl(void **result, uintptr_t *frames, int *sizes, int size; uintptr_t pc = emscripten_stack_snapshot(); - size = emscripten_stack_unwind_buffer(pc, stack, kStackLength); + size = + static_cast(emscripten_stack_unwind_buffer(pc, stack, kStackLength)); int result_count = size - skip_count; if (result_count < 0) result_count = 0; @@ -87,10 +89,10 @@ static int UnwindImpl(void **result, uintptr_t *frames, int *sizes, if (IS_STACK_FRAMES) { // No implementation for finding out the stack frames yet. if (frames != nullptr) { - memset(frames, 0, sizeof(*frames) * result_count); + memset(frames, 0, sizeof(*frames) * static_cast(result_count)); } if (sizes != nullptr) { - memset(sizes, 0, sizeof(*sizes) * result_count); + memset(sizes, 0, sizeof(*sizes) * static_cast(result_count)); } } if (min_dropped_frames != nullptr) { diff --git a/absl/debugging/symbolize_emscripten.inc b/absl/debugging/symbolize_emscripten.inc index a0f344dd..f6da0ac2 100644 --- a/absl/debugging/symbolize_emscripten.inc +++ b/absl/debugging/symbolize_emscripten.inc @@ -58,12 +58,13 @@ bool Symbolize(const void* pc, char* out, int out_size) { return false; } - strncpy(out, func_name, out_size); + strncpy(out, func_name, static_cast(out_size)); if (out[out_size - 1] != '\0') { // strncpy() does not '\0' terminate when it truncates. static constexpr char kEllipsis[] = "..."; - int ellipsis_size = std::min(sizeof(kEllipsis) - 1, out_size - 1); + size_t ellipsis_size = + std::min(sizeof(kEllipsis) - 1, static_cast(out_size) - 1); memcpy(out + out_size - ellipsis_size - 1, kEllipsis, ellipsis_size); out[out_size - 1] = '\0'; }