RFR: 8345012: os::build_agent_function_name potentially wastes a byte when allocating the buffer [v2]
Aleksey Shipilev
shade at openjdk.org
Wed Nov 27 19:23:39 UTC 2024
On Wed, 27 Nov 2024 03:27:28 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> This is a minor issue noticed in the review of JEP 479. The calculations of the buffer length always do `+2` to allow for an optional underscore plus the terminator. A solution was suggested in that review (which I initially used) but I've instead opted for a solution where `name_len` always reflects the actual length of the lib name - otherwise we need to subtract the 1 again when doing the `strncat`. I also made the need for the underscore explicit.
>>
>> As the same code is used in os_posix.cpp both versions were made consistent. The only difference between them is the Windows version has to check for a drive specifier. I toyed with combining them into a shared version with a Windows-specific chunk, but opted for the simpler change. I can revisit that if people have strong opinions.
>>
>> Testing
>> - tiers 1-4
>>
>> Thanks
>
> David Holmes has updated the pull request incrementally with one additional commit since the last revision:
>
> Fix bug re-checking minimum length
Generally looks reasonable.
Without looking, I was thinking that going for a shared method with a Windows-specific chunk would be cleaner. Is it uglier than expected?
Nitpicking: If we are introducing `need_underscore`, then maybe we should use it near the actual `strcat(agent_entry_name, "_");`? Alternatively, I would introduce `underscore_len`, mixed it up in `len`, and choose whether it is `0` or `1`, depending on `lib_name != nullptr`.
-------------
PR Review: https://git.openjdk.org/jdk/pull/22404#pullrequestreview-2465811460
More information about the hotspot-runtime-dev
mailing list