An open issue in Android’s NDK repository describes a bug in two wide-character string functions on September Android 17 builds. The report says wcscspn() and wcspbrk() can stop at a non-ASCII character even when that character is not in the set being searched. It also points to a gap between the code in the public June Android 17 source release and the implementation found in September device builds.

The reporter says the error appears when the reject set contains at least two characters, all below U+0100. In that case, any character at or above U+0100 can be treated as a match. For code that scans text for ASCII delimiters such as a newline, an emoji, Chinese, Cyrillic, Greek or extended Latin character can make the scan stop too early.

Which builds and functions are involved

The issue lists Pixel 7 and Pixel 8a devices on September 2026 Android 17 builds as affected. The same reporter tested a Nothing Phone 2 running Android 16 and said it behaved correctly. That comparison does not establish that every Android 16 device is unaffected; the issue concerns the specific builds and tests described by its author.

The report says other wide-character functions, including wcsspn(), wcschr() and wcsstr(), behaved correctly in the same test. It attributes the failure to the complement-style scan: wcscspn() should continue past a character that is not in the reject set, but the September build stops when it encounters a value above the 256-entry lookup table. wcspbrk() uses that scan and inherits the behavior.

The issue author says a June 2026 public Android 17 source release uses a simple loop that handles the case correctly, while the September builds contain different code. The report therefore places the regression between those releases. An Android collaborator replied on October 12 that the description appeared correct and that the issue seemed to remain in the current development tree. The collaborator also noted that a public release branch was too old to contain newer changes.

Why developers say the source gap matters

When source code for a shipped library does not match the code in the public release, developers may have to inspect the compiled library to understand a device-only behavior. The issue author says they disassembled the September libc.so build to trace the condition and described how the lookup table causes the premature stop.

The report gives two examples of software affected by the behavior: Visual Pinball on Android, whose Wine-based script engine reportedly failed to load a table when a comment contained an emoji, and a file-move operation that treated paths containing certain characters as wildcard patterns. These are examples supplied by the issue author, not a broad measurement of affected apps.

The repository issue remained open when this article was prepared. It does not identify a final fix or a release date. The report is also limited to the tested builds and string functions; it does not show that all Android applications or devices are affected. Its narrower point is that the public June source snapshot did not match the September Android 17 code the reporter examined, making this particular regression harder to trace from source alone.