fix: correct Android JNI float array reads
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled

This commit is contained in:
OpenAI Codex
2026-09-07 13:20:32 +08:00
parent 369957e964
commit 4f76245533

View File

@@ -1186,8 +1186,8 @@ jni::jboolean NativeMapView::setRasterParticleColors(JNIEnv& env,
auto* layer = dynamic_cast<mbgl::style::RasterParticleLayer*>(map->getStyle().getLayer(jni::Make<std::string>(env, layerId)));
if (!layer || particle.Length(env) != 4 || trail.Length(env) != 4) return false;
std::array<float, 4> particleColor, trailColor;
jni::GetArrayRegion(env, particle, 0, 4, particleColor.data());
jni::GetArrayRegion(env, trail, 0, 4, trailColor.data());
particle.GetRegion(env, 0, particleColor);
trail.GetRegion(env, 0, trailColor);
if (!mbgl::style::validWeatherRGBA(particleColor) || !mbgl::style::validWeatherRGBA(trailColor)) return false;
layer->setParticleColor(particleColor);
layer->setTrailColor(trailColor);
@@ -1202,8 +1202,8 @@ jni::jboolean NativeMapView::setWeatherColorStops(JNIEnv& env,
const auto count = speeds.Length(env);
if (!layer || count < 2 || count > static_cast<jni::jsize>(mbgl::style::MaxWeatherColorStops) || rgba.Length(env) != count * 4) return false;
std::vector<float> speedValues(count), rgbaValues(static_cast<size_t>(count) * 4);
jni::GetArrayRegion(env, speeds, 0, count, speedValues.data());
jni::GetArrayRegion(env, rgba, 0, count * 4, rgbaValues.data());
speeds.GetRegion(env, 0, speedValues);
rgba.GetRegion(env, 0, rgbaValues);
std::vector<mbgl::style::WeatherColorStop> stops;
stops.reserve(count);
for (jni::jsize i = 0; i < count; ++i) {