Skip to content

Fix Android ICU crash while grouping offers; release 0.1.66 - #65

Merged
lesecuritae merged 3 commits into
mainfrom
fix/issue-64-icu-memory-20261023
Oct 23, 2026
Merged

lesecuritae merged 3 commits into
mainfrom
fix/issue-64-icu-memory-20261023

Conversation

@lesecuritae

Copy link
Copy Markdown
Owner

Loading offers repeatedly compiled the Unicode separator regex in ProductGroups and could crash Android ICU with U_MEMORY_ALLOCATION_ERROR (issue #64). Normalize by Unicode code point instead, and prepare normalized category labels once. Existing category boundaries, Unicode letters/numbers, umlauts and user data are preserved.

Release 0.1.66 updates the shared APK/server version; no backend behavior, database schema or dependencies change.

Validation:

  • 189 standard and 192 F-Droid JVM tests passed.
  • Android 17/API 37 AOSP ATD on KVM: two actual instrumentation tests passed, including 20,000 main-thread offer group assignments.
  • Compiled normalizer no longer constructs or compiles regexes.
  • No physical Pixel 8 Pro test or complete reproduction of the original memory pressure is claimed.

References #64; the issue will be closed after the signed APK and Docker image are published and verified.

Normalize Unicode code points without constructing a separator regex per offer and reuse normalized canonical groups. Preserve NFKC, root-locale case folding, all Unicode letter/number categories, underscores and word boundaries.

Add Unicode, canonical category and repeated offer-batch regression coverage for issue #64. Standard and F-Droid unit suites pass (189/192 tests).
Cover Unicode normalization and 20,000 successive offer group assignments in native instrumentation. Both tests passed on an isolated Android 17 API 37 AOSP test device with KVM.
@lesecuritae
lesecuritae merged commit 3050105 into main Oct 23, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant