On Tue, 13 Jan 2026 06:26:02 GMT, Sruthy Jayan <[email protected]> wrote:

> Bug Reference : https://bugs.openjdk.org/browse/JDK-8375045
> 
> On AIX, the POSIX TZ environment variable is not interpreted as expected when 
> it includes DST rules.
> Example: `TZ=CET-1CEST,M3.5.0,M10.5.0`
> 
> The fix includes : 
> The TZ environment variable is processed by first matching the full value 
> against tzmappings, then retrying with the value truncated at the first comma 
> if no match is found, and finally defaulting to GMT if no mapping exists.
> 
> This fixes the regression caused by 
> https://bugs.openjdk.org/browse/JDK-8292899
> 
> Signed-off-by: Sruthy Jayan <[email protected]>

I don't have any knowledge on AIX's TZ mappings, so I just left generic 
comments.

src/java.base/unix/native/libjava/TimeZone_md.c line 355:

> 353: 
> 354: static char *
> 355: mapTimezoneToJava(const char *tz_buf, size_t tz_len, const char 
> *mapfilename) {

This function name is kind of vague as to what it actually does. More specific 
name would be preferred.

src/java.base/unix/native/libjava/TimeZone_md.c line 451:

> 449:         temp_tz = strchr(tz, ',');
> 450:         tz_len = (temp_tz == NULL) ? strlen(tz) : temp_tz - tz;
> 451:         tz_buf = (char *)malloc(tz_len + 1);

Is this malloc needed?  Is `tz_buf` already allocated by the above `strdup` 
with full length? If for some reason it needs to reallocate a new buffer, 
previously allocated buffer needs to be freed.

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

PR Review: https://git.openjdk.org/jdk/pull/29183#pullrequestreview-3868469696
PR Review Comment: https://git.openjdk.org/jdk/pull/29183#discussion_r2865687106
PR Review Comment: https://git.openjdk.org/jdk/pull/29183#discussion_r2865692828

Reply via email to