From e15b89af9889d94eca15380048fc2bf6bbc8e22e Mon Sep 17 00:00:00 2001 From: Tom Cooks Date: Wed, 30 Sep 2026 08:11:24 -0400 Subject: Fix transcription: streaming resampler trim could overrun the buffer (1.3.1-alpha) The resampler clamped nothing before Arrays.copyOfRange(buffer, drop, length), so when the fractional read position overshot the buffer end, drop could be length+1 and the copy threw IllegalArgumentException: 8194 > 8193. This broke every transcription (base and tiny, any language). Clamp drop to buffer.length. --- app/build.gradle.kts | 4 ++-- app/src/main/java/com/wuhei/reccoon/TranscriptionEngine.java | 3 +++ app/src/main/res/values/strings.xml | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) (limited to 'app') diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b1a0836..d57a7e6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -15,8 +15,8 @@ android { applicationId = "com.wuhei.reccoon" minSdk = 26 targetSdk = 35 - versionCode = 4 - versionName = "1.3.0-alpha" + versionCode = 5 + versionName = "1.3.1-alpha" ndk { // Prebuilt sherpa-onnx / onnxruntime native libraries. diff --git a/app/src/main/java/com/wuhei/reccoon/TranscriptionEngine.java b/app/src/main/java/com/wuhei/reccoon/TranscriptionEngine.java index f4306ff..efee8dd 100644 --- a/app/src/main/java/com/wuhei/reccoon/TranscriptionEngine.java +++ b/app/src/main/java/com/wuhei/reccoon/TranscriptionEngine.java @@ -383,6 +383,9 @@ public final class TranscriptionEngine { } int drop = (int) position; + if (drop > buffer.length) { + drop = buffer.length; + } if (drop > 0) { buffer = Arrays.copyOfRange(buffer, drop, buffer.length); position -= drop; diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 54a69d9..dbd3535 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,7 +1,7 @@ RECCoon - by wuhei · v1.3.0-alpha + by wuhei · v1.3.1-alpha 00:00 44.1 kHz · 16-bit · PCM (WAV) · cue markers -- cgit v1.2.3