File tree Expand file tree Collapse file tree 1 file changed +11
-9
lines changed Expand file tree Collapse file tree 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)
619619
620620static bool _pdo_pgsql_send_copy_data (pdo_pgsql_db_handle * H , zval * line ) {
621621 size_t query_len ;
622- char * query ;
622+ zend_string * query ;
623623
624624 if (!try_convert_to_string (line )) {
625625 return false;
626626 }
627627
628628 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 ;
631632
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 ) ++ ;
634637 }
635- query [query_len ] = '\0' ;
636638
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 );
639641 return false;
640642 }
641643
642- efree (query );
644+ zend_string_release_ex (query , false );
643645 return true;
644646}
645647
You can’t perform that action at this time.
0 commit comments