@@ -599,13 +599,13 @@ static void firebird_handle_closer(pdo_dbh_t *dbh) /* {{{ */
599599 }
600600
601601 if (H -> date_format ) {
602- efree (H -> date_format );
602+ zend_string_release_ex (H -> date_format , false );
603603 }
604604 if (H -> time_format ) {
605- efree (H -> time_format );
605+ zend_string_release_ex (H -> time_format , false );
606606 }
607607 if (H -> timestamp_format ) {
608- efree (H -> timestamp_format );
608+ zend_string_release_ex (H -> timestamp_format , false );
609609 }
610610
611611 if (H -> einfo .errmsg ) {
@@ -1091,10 +1091,9 @@ 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- efree (H -> date_format );
1094+ zend_string_release_ex (H -> date_format , false );
10951095 }
1096- spprintf (& H -> date_format , 0 , "%s" , ZSTR_VAL (str ));
1097- zend_string_release_ex (str , 0 );
1096+ H -> date_format = str ;
10981097 }
10991098 return true;
11001099
@@ -1105,10 +1104,9 @@ static bool pdo_firebird_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val
11051104 return false;
11061105 }
11071106 if (H -> time_format ) {
1108- efree (H -> time_format );
1107+ zend_string_release_ex (H -> time_format , false );
11091108 }
1110- spprintf (& H -> time_format , 0 , "%s" , ZSTR_VAL (str ));
1111- zend_string_release_ex (str , 0 );
1109+ H -> time_format = str ;
11121110 }
11131111 return true;
11141112
@@ -1119,10 +1117,9 @@ static bool pdo_firebird_set_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val
11191117 return false;
11201118 }
11211119 if (H -> timestamp_format ) {
1122- efree (H -> timestamp_format );
1120+ zend_string_release_ex (H -> timestamp_format , false );
11231121 }
1124- spprintf (& H -> timestamp_format , 0 , "%s" , ZSTR_VAL (str ));
1125- zend_string_release_ex (str , 0 );
1122+ H -> timestamp_format = str ;
11261123 }
11271124 return true;
11281125
@@ -1243,15 +1240,27 @@ static int pdo_firebird_get_attribute(pdo_dbh_t *dbh, zend_long attr, zval *val)
12431240 return 1 ;
12441241
12451242 case PDO_FB_ATTR_DATE_FORMAT :
1246- ZVAL_STRING (val , H -> date_format ? H -> date_format : PDO_FB_DEF_DATE_FMT );
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+ }
12471248 return 1 ;
12481249
12491250 case PDO_FB_ATTR_TIME_FORMAT :
1250- ZVAL_STRING (val , H -> time_format ? H -> time_format : PDO_FB_DEF_TIME_FMT );
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+ }
12511256 return 1 ;
12521257
12531258 case PDO_FB_ATTR_TIMESTAMP_FORMAT :
1254- ZVAL_STRING (val , H -> timestamp_format ? H -> timestamp_format : PDO_FB_DEF_TIMESTAMP_FMT );
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+ }
12551264 return 1 ;
12561265
12571266 case PDO_FB_TRANSACTION_ISOLATION_LEVEL :
0 commit comments