2026年9月のAndroid 17ビルドでは、除外セットに含まれる文字が2つ以上あり、すべてU+0100未満の場合、wcscspn()とwcspbrk()は0x100以上のwchar_tをすべて一致とみなします。テキストに絵文字、CJK、キリル文字、ギリシャ文字、拡張ラテン文字が含まれると、改行などのASCII区切り文字によるワイド文字列の走査が壊れます。
このバグは256バイトのルックアップテーブルを用いた実装に起因します。U+00FFを超える文字に遭遇すると走査を停止し、誤ってそれを一致として報告します。Pixel 7やPixel 8aを含む2026年9月ビルドの端末が影響を受けますが、Android 16を搭載したNothing Phone 2は影響を受けません。この回帰は2026年6月の公開ソースと9月のビルドの間に導入されました。
この問題は、Visual Pinballのような實際のアプリケーションにも影響します。VBScriptのコメント内の絵文字によって字句解析器が行末を誤認し、ファイルパス処理ではU+0100以上の文字がワイルドカードパターンとして扱われます。EXPECT_EQ(3u, wcscspn(L"a\u0100b\n", L"x\n"))のようなテストケースで欠陥を確認できます。2026年6月のAndroid公開ソースはexternal/llvm-libcから正しいwcscspn/wcspbrkをビルドしており、回帰が9月のlibc.soアップデートで発生したことが裏付けられています。
出典: Hacker News · 要約:HeadlinesBriefing