RFR: JDK-8312612: handle WideCharToMultiByte return values
Matthias Baesken
mbaesken at openjdk.org
Fri Jul 28 09:45:53 UTC 2023
On Fri, 28 Jul 2023 08:23:35 GMT, Christoph Langer <clanger at openjdk.org> wrote:
>> The function WideCharToMultiByte is used at a number of places of the JDK codebase for conversion purposes.
>> Unfortunately, the function might fail because of various reasons, so the return value must be checked to avoid undefined behavior or even crashes.
>> see
>> https://learn.microsoft.com/en-us/windows/win32/api/stringapiset/nf-stringapiset-widechartomultibyte
>> especially
>> https://learn.microsoft.com/en-us/windows/win32/api/stringapiset/nf-stringapiset-widechartomultibyte#return-value
>>
>> At most places in the coding the return values are already checked, but some are missing.
>
> src/java.desktop/windows/native/libawt/windows/awt_PrintJob.cpp line 3933:
>
>> 3931: JNU_ThrowByName(env, PRINTEREXCEPTION_STR, errStr);
>> 3932: } else {
>> 3933: JNU_ThrowByName(env, PRINTEREXCEPTION_STR, "Secondary error while OS message extraction");
>
> better: secondary error during OS message extraction
I borrowed it from here (other error handling of WideCharToMultiByte)
jdk/src/java.base/windows/native/libjava/ProcessImpl_md.c
102 const char *errorMessage = "Secondary error while OS message extraction";
should I change both locations ?
> src/java.desktop/windows/native/libjsound/PLATFORM_API_WinOS_Charset_Util.cpp line 46:
>
>> 44: delete[] lpUTF8Str;
>> 45: }
>> 46: return NULL;
>
> better move `return NULL` into else block?
Better remove the else block :-) ?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/15015#discussion_r1277339373
PR Review Comment: https://git.openjdk.org/jdk/pull/15015#discussion_r1277340457
More information about the client-libs-dev
mailing list