@@ -599,13 +599,13 @@ static void firebird_handle_closer(pdo_dbh_t *dbh) /* {{{ */
599599 }
600600
601601 if (H -> date_format ) {
602- zend_string_release_ex (H -> date_format , false );
602+ pefree (H -> date_format , dbh -> is_persistent );
603603 }
604604 if (H -> time_format ) {
605- zend_string_release_ex (H -> time_format , false );
605+ pefree (H -> time_format , dbh -> is_persistent );
606606 }
607607 if (H -> timestamp_format ) {
608- zend_string_release_ex (H -> timestamp_format , false );
608+ pefree (H -> timestamp_format , dbh -> is_persistent );
609609 }
610610
611611 if (H -> einfo .errmsg ) {
@@ -1091,9 +1091,11 @@ static bool pdo_firebird_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val
10911091 return false;
10921092 }
10931093 if (H -> date_format ) {
1094- zend_string_release_ex (H -> date_format , false);
1094+ pefree (H -> date_format , dbh -> is_persistent );
1095+ H -> date_format = NULL ;
10951096 }
1096- H -> date_format = str ;
1097+ H -> date_format = pestrndup (ZSTR_VAL (str ), ZSTR_LEN (str ),dbh -> is_persistent );
1098+ zend_string_release_ex (str , 0 );
10971099 }
10981100 return true;
10991101
@@ -1104,9 +1106,11 @@ static bool pdo_firebird_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val
11041106 return false;
11051107 }
11061108 if (H -> time_format ) {
1107- zend_string_release_ex (H -> time_format , false);
1109+ pefree (H -> time_format , dbh -> is_persistent );
1110+ H -> time_format = NULL ;
11081111 }
1109- H -> time_format = str ;
1112+ H -> time_format = pestrndup (ZSTR_VAL (str ), ZSTR_LEN (str ),dbh -> is_persistent );
1113+ zend_string_release_ex (str , 0 );
11101114 }
11111115 return true;
11121116
@@ -1117,9 +1121,11 @@ static bool pdo_firebird_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val
11171121 return false;
11181122 }
11191123 if (H -> timestamp_format ) {
1120- zend_string_release_ex (H -> timestamp_format , false);
1124+ pefree (H -> timestamp_format , dbh -> is_persistent );
1125+ H -> timestamp_format = NULL ;
11211126 }
1122- H -> timestamp_format = str ;
1127+ H -> timestamp_format = pestrndup (ZSTR_VAL (str ), ZSTR_LEN (str ),dbh -> is_persistent );
1128+ zend_string_release_ex (str , 0 );
11231129 }
11241130 return true;
11251131
@@ -1240,27 +1246,15 @@ static int pdo_firebird_get_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val)
12401246 return 1 ;
12411247
12421248 case PDO_FB_ATTR_DATE_FORMAT :
1243- if (H -> date_format ) {
1244- ZVAL_STR_COPY (val , H -> date_format );
1245- } else {
1246- ZVAL_STRING (val , PDO_FB_DEF_DATE_FMT );
1247- }
1249+ ZVAL_STRING (val , H -> date_format ? H -> date_format : PDO_FB_DEF_DATE_FMT );
12481250 return 1 ;
12491251
12501252 case PDO_FB_ATTR_TIME_FORMAT :
1251- if (H -> time_format ) {
1252- ZVAL_STR_COPY (val , H -> time_format );
1253- } else {
1254- ZVAL_STRING (val , PDO_FB_DEF_TIME_FMT );
1255- }
1253+ ZVAL_STRING (val , H -> time_format ? H -> time_format : PDO_FB_DEF_TIME_FMT );
12561254 return 1 ;
12571255
12581256 case PDO_FB_ATTR_TIMESTAMP_FORMAT :
1259- if (H -> timestamp_format ) {
1260- ZVAL_STR_COPY (val , H -> timestamp_format );
1261- } else {
1262- ZVAL_STRING (val , PDO_FB_DEF_TIMESTAMP_FMT );
1263- }
1257+ ZVAL_STRING (val , H -> timestamp_format ? H -> timestamp_format : PDO_FB_DEF_TIMESTAMP_FMT );
12641258 return 1 ;
12651259
12661260 case PDO_FB_TRANSACTION_ISOLATION_LEVEL :
0 commit comments