Skip to content

Commit fcdc0a6

Browse files
committed
Fix resetting of internal_encoding and friends
We need to update the value even if new_value is NULL. In particular, it should be reset back to NULL after each request if the setting was not specified on startup. Otherwise we leave dangling pointers.
1 parent dd997a4 commit fcdc0a6

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

main/main.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -594,11 +594,11 @@ PHPAPI void (*php_internal_encoding_changed)(void) = NULL;
594594
*/
595595
static PHP_INI_MH(OnUpdateDefaultCharset)
596596
{
597+
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
598+
if (php_internal_encoding_changed) {
599+
php_internal_encoding_changed();
600+
}
597601
if (new_value) {
598-
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
599-
if (php_internal_encoding_changed) {
600-
php_internal_encoding_changed();
601-
}
602602
#ifdef PHP_WIN32
603603
php_win32_cp_do_update(ZSTR_VAL(new_value));
604604
#endif
@@ -611,11 +611,11 @@ static PHP_INI_MH(OnUpdateDefaultCharset)
611611
*/
612612
static PHP_INI_MH(OnUpdateInternalEncoding)
613613
{
614+
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
615+
if (php_internal_encoding_changed) {
616+
php_internal_encoding_changed();
617+
}
614618
if (new_value) {
615-
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
616-
if (php_internal_encoding_changed) {
617-
php_internal_encoding_changed();
618-
}
619619
#ifdef PHP_WIN32
620620
php_win32_cp_do_update(ZSTR_VAL(new_value));
621621
#endif
@@ -628,11 +628,11 @@ static PHP_INI_MH(OnUpdateInternalEncoding)
628628
*/
629629
static PHP_INI_MH(OnUpdateInputEncoding)
630630
{
631+
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
632+
if (php_internal_encoding_changed) {
633+
php_internal_encoding_changed();
634+
}
631635
if (new_value) {
632-
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
633-
if (php_internal_encoding_changed) {
634-
php_internal_encoding_changed();
635-
}
636636
#ifdef PHP_WIN32
637637
php_win32_cp_do_update(NULL);
638638
#endif
@@ -645,11 +645,11 @@ static PHP_INI_MH(OnUpdateInputEncoding)
645645
*/
646646
static PHP_INI_MH(OnUpdateOutputEncoding)
647647
{
648+
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
649+
if (php_internal_encoding_changed) {
650+
php_internal_encoding_changed();
651+
}
648652
if (new_value) {
649-
OnUpdateString(entry, new_value, mh_arg1, mh_arg2, mh_arg3, stage);
650-
if (php_internal_encoding_changed) {
651-
php_internal_encoding_changed();
652-
}
653653
#ifdef PHP_WIN32
654654
php_win32_cp_do_update(NULL);
655655
#endif

0 commit comments

Comments
 (0)