Fix "unsafe narrowing" in absl for Emscripten

Addresses failures with -Wsign-compare.

PiperOrigin-RevId: 745713553
Change-Id: I8053c3cc097355ce3606a30a7546d92594438d37
This commit is contained in:
Abseil Team
2025-04-09 13:32:34 -07:00
committed by Copybara-Service
parent 12f4be6805
commit 93c112c587
3 changed files with 9 additions and 6 deletions

View File

@@ -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<size_t>(getpagesize());
#else
return static_cast<size_t>(sysconf(_SC_PAGESIZE));
#endif

View File

@@ -24,6 +24,7 @@
#include <stdint.h>
#include <atomic>
#include <cstddef>
#include <cstring>
#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<int>(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<size_t>(result_count));
}
if (sizes != nullptr) {
memset(sizes, 0, sizeof(*sizes) * result_count);
memset(sizes, 0, sizeof(*sizes) * static_cast<size_t>(result_count));
}
}
if (min_dropped_frames != nullptr) {

View File

@@ -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<size_t>(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<int>(sizeof(kEllipsis) - 1, out_size - 1);
size_t ellipsis_size =
std::min(sizeof(kEllipsis) - 1, static_cast<size_t>(out_size) - 1);
memcpy(out + out_size - ellipsis_size - 1, kEllipsis, ellipsis_size);
out[out_size - 1] = '\0';
}