Skip to content

Commit 77f7ec5

Browse files
committed
Fix TimeZone leak in intl MessageFormat
I'm just giving each format a distinct owned object here ... sharing it looks complicated.
1 parent c796220 commit 77f7ec5

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

ext/intl/msgformat/msgformat_helpers.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -343,20 +343,24 @@ static void umsg_set_timezone(MessageFormatter_object *mfo,
343343
}
344344

345345
if (used_tz == NULL) {
346-
zval nullzv, *zvptr = &nullzv;
347-
ZVAL_NULL(zvptr);
348-
used_tz = timezone_process_timezone_argument(zvptr, &err, "msgfmt_format");
346+
zval nullzv;
347+
ZVAL_NULL(&nullzv);
348+
used_tz = timezone_process_timezone_argument(&nullzv, &err, "msgfmt_format");
349349
if (used_tz == NULL) {
350350
continue;
351351
}
352352
}
353353

354-
df->setTimeZone(*used_tz);
354+
df->adoptTimeZone(used_tz->clone());
355355
}
356356

357357
if (U_SUCCESS(err.code)) {
358358
mfo->mf_data.tz_set = 1;
359359
}
360+
361+
if (used_tz) {
362+
delete used_tz;
363+
}
360364
}
361365

362366
U_CFUNC void umsg_format_helper(MessageFormatter_object *mfo,

0 commit comments

Comments
 (0)