u_strCompareIter compares two UCharIterator texts in code unit or code
point order as ICU 78.1's ustring.cpp does, driving the guest iterators
through their move, next, current and previous callbacks in ICU's order.
u_getUnicodeVersion reports Unicode 17.0, the data version of ICU 78.1.
A null callback that ICU would call throws std::invalid_argument, and the
final difference wraps instead of overflowing. The debt entry records
that neither export was compared with a console.
Restore the two placeholders that #13457 implements, so the two pull
requests no longer change the same exports.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Each sceIcuUnknown stub whose NID equals the nid_names.py hash of an
ICU 78.1 C API identifier now carries that name. The exports still
throw through NotImplemented_nid_no_patch and keep the no-parameter
import-resolution convention; the patched library exports the same
NIDs.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Replace the five Unknown stubs whose NIDs hash these ICU names with the
uchar.cpp definitions of ICU 78.1 (049e0d6a), over the Zs, Zl, Zp and
White_Space code points that ICU 65.1 to 78.1 ship. Values outside
U+0000..U+10FFFF return 0, as ICU's trie error value gives.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
ICU 78.1's u_unescapeAt dereferences the offset and calls the callback without checks, and u_unescape reads the source without one, so a null one faults: throw std::invalid_argument there instead of NotImplemented_nid_no_patch. A negative u_unescape capacity is clamped by _appendUChars and fails every room check, so nothing is written and the full length is returned; only a capacity whose signed difference with the output length overflows, which ICU leaves undefined, still throws.