File tree 1 file changed +11
-9
lines changed
1 file changed +11
-9
lines changed Original file line number Diff line number Diff line change @@ -619,27 +619,29 @@ static bool pgsql_handle_rollback(pdo_dbh_t *dbh)
619
619
620
620
static bool _pdo_pgsql_send_copy_data (pdo_pgsql_db_handle * H , zval * line ) {
621
621
size_t query_len ;
622
- char * query ;
622
+ zend_string * query ;
623
623
624
624
if (!try_convert_to_string (line )) {
625
625
return false;
626
626
}
627
627
628
628
query_len = Z_STRLEN_P (line );
629
- query = emalloc (query_len + 2 ); /* room for \n\0 */
630
- memcpy (query , Z_STRVAL_P (line ), query_len );
629
+ query = zend_string_alloc (query_len + 2 , false); /* room for \n\0 */
630
+ memcpy (ZSTR_VAL (query ), Z_STRVAL_P (line ), query_len + 1 );
631
+ ZSTR_LEN (query ) = query_len ;
631
632
632
- if (query [query_len - 1 ] != '\n' ) {
633
- query [query_len ++ ] = '\n' ;
633
+ if (query_len > 0 && ZSTR_VAL (query )[query_len - 1 ] != '\n' ) {
634
+ ZSTR_VAL (query )[query_len ] = '\n' ;
635
+ ZSTR_VAL (query )[query_len + 1 ] = '\0' ;
636
+ ZSTR_LEN (query ) ++ ;
634
637
}
635
- query [query_len ] = '\0' ;
636
638
637
- if (PQputCopyData (H -> server , query , query_len ) != 1 ) {
638
- efree (query );
639
+ if (PQputCopyData (H -> server , ZSTR_VAL ( query ), ZSTR_LEN ( query ) ) != 1 ) {
640
+ zend_string_release_ex (query , false );
639
641
return false;
640
642
}
641
643
642
- efree (query );
644
+ zend_string_release_ex (query , false );
643
645
return true;
644
646
}
645
647
You can’t perform that action at this time.
0 commit comments