Fix deprecated usage of strtok

The latest Android NDK marks strtok as deprecated and suggests using
strtok_r instead.

Bug: 477295731
Change-Id: I2b20a2ae0a9e19ec93e31669ec380802e6902090
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/7739107
Commit-Queue: Frank Barchard <fbarchard@chromium.org>
Reviewed-by: Wan-Teh Chang <wtc@google.com>
Reviewed-by: Frank Barchard <fbarchard@chromium.org>
This commit is contained in:
Sam Maier 2026-04-08 14:17:58 -04:00 committed by libyuv LUCI CQ
parent 1170363ce5
commit 7903a6c632

View File

@ -53,6 +53,11 @@ extern "C" {
#define SAFEBUFFERS
#endif
#if defined(_MSC_VER)
// MSVC provides strtok_s which is functionally equivalent to strtok_r.
#define strtok_r strtok_s
#endif
// cpu_info_ variable for SIMD instruction sets detected.
LIBYUV_API int cpu_info_ = 0;
@ -330,16 +335,17 @@ LIBYUV_API SAFEBUFFERS int RiscvCpuCaps(const char* cpuinfo_name) {
// supervisor-level extensions.
extensions = strpbrk(isa, "zxs");
if (extensions) {
extensions_len = strlen(extensions);
// Multi-letter extensions are seperated by a single underscore
// as described in RISC-V User-Level ISA V2.2.
char* ext = strtok(extensions, "_");
extensions_len = strlen(extensions);
char* saveptr = NULL;
char* ext = strtok_r(extensions, "_", &saveptr);
while (ext) {
// Search for the ZVFH (Vector FP16) extension.
if (!strcmp(ext, "zvfh")) {
flag |= kCpuHasRVVZVFH;
}
ext = strtok(NULL, "_");
ext = strtok_r(NULL, "_", &saveptr);
}
}
std_isa_len = isa_len - extensions_len - 5;