RFR: 8334599: Improve code from JDK-8302671

Julian Waters jwaters at openjdk.org
Wed Jul 3 13:28:21 UTC 2024


On Mon, 24 Jun 2024 20:43:00 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:

>> In [JDK-8302671](https://bugs.openjdk.org/browse/JDK-8302671) I fixed a memmove decay bug by rewriting a sizeof on an array to an explicit size of 256, but this is a bit of a band aid fix. It's come to my attention that in C++, one can pass an array by reference, which causes sizeof to work correctly on an array and has the added bonus of enforcing an array of that size on the arguments passed to that method. I've reverted my change from 8302671 and instead explicitly made kstate an array reference so that sizeof works on the array as expected, and that the array size can be explicitly set in the array brackets
>> 
>> Verification: https://godbolt.org/z/Ezj76eWWY and GitHub Actions
>
> src/java.desktop/windows/native/libawt/windows/awt_Component.cpp line 3368:
> 
>> 3366:     BYTE tmpState[256];
>> 3367:     WCHAR wc[2];
>> 3368:     memmove(tmpState, kstate, sizeof(kstate));
> 
> Using `memcpy` could be more performant, we know for sure that `tmpState` and `kstate` do not overlap.

I can't quite comment on that since I don't really know what the purpose of the memmove is. What does @prrace think?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/19798#discussion_r1664191137


More information about the client-libs-dev mailing list