Release the process-wide state this module keeps, following ICU 78.1
ucln_cmn.cpp: the functions stored by u_setMemoryFunctions are cleared and
the data and time zone files directories return to their empty defaults.
Calling it repeatedly or with nothing set is harmless, and the module can
be configured again afterwards.
The sceIcuUnknown stub with this NID is removed.
Keep the time zone files directory as a lock-protected string following
ICU 78.1 putil.cpp. Setting it with a failure status changes nothing;
otherwise the previous value is cleared first, so a null path leaves the
empty string and sets U_ILLEGAL_ARGUMENT_ERROR, and any other path is
copied. The getter returns the empty string for a failure status and the
stored value otherwise; it is empty until set because the
ICU_TIMEZONE_FILES_DIR variable and build-time default are not consulted.
A null UErrorCode throws where ICU dereferences it.
The two sceIcuUnknown stubs with these NIDs are removed.
Keep the data directory as a lock-protected copy, following ICU 78.1
putil.cpp: a null or empty path stores the empty string, any other path
is copied so later changes to the caller's buffer do not show, and the
getter returns the stored string, which is empty until a directory is
set. The ICU_DATA environment variable and compile-time defaults are not
consulted. The returned pointer stays valid until the next set, as in ICU.
The two sceIcuUnknown stubs with these NIDs are removed.
Store the context and the allocate, reallocate and free callbacks under a
lock, following ICU 78.1 cmemory.cpp: a status that already is a failure
returns without reading the callbacks, and any null callback sets
U_ILLEGAL_ARGUMENT_ERROR and keeps the previous functions. Nothing in
this module allocates through ICU's allocator yet, so the stored callbacks
are not called.
The sceIcuUnknown stub with this NID is removed.
Both functions are deprecated in ICU 78.1 and only report that user
supplied locking is unsupported: when the status is not a failure it
becomes U_UNSUPPORTED_ERROR and the callbacks are ignored (umutex.cpp). A
status that already is a failure is left unchanged. A null UErrorCode
throws where ICU dereferences it.
The two sceIcuUnknown stubs with these NIDs are removed.