abies Sat Aug 16 13:11:26 2003 EDT Modified files: (Branch: PHP_4_3) /php-src/ext/interbase interbase.c Log: MFH Fixed bug #18744 Index: php-src/ext/interbase/interbase.c diff -u php-src/ext/interbase/interbase.c:1.91.2.15 php-src/ext/interbase/interbase.c:1.91.2.16 --- php-src/ext/interbase/interbase.c:1.91.2.15 Wed Aug 13 09:27:36 2003 +++ php-src/ext/interbase/interbase.c Sat Aug 16 13:11:25 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: interbase.c,v 1.91.2.15 2003/08/13 13:27:36 abies Exp $ */ +/* $Id: interbase.c,v 1.91.2.16 2003/08/16 17:11:25 abies Exp $ */ /* TODO: Arrays, roles? @@ -624,7 +624,7 @@ php_info_print_table_start(); php_info_print_table_row(2, "Interbase Support", "enabled"); - php_info_print_table_row(2, "Revision", "$Revision: 1.91.2.15 $"); + php_info_print_table_row(2, "Revision", "$Revision: 1.91.2.16 $"); #ifdef COMPILE_DL_INTERBASE php_info_print_table_row(2, "Dynamic Module", "yes"); #endif @@ -2667,6 +2667,8 @@ { zval **blob_arg, **string_arg; ibase_blob_handle *ib_blob; + unsigned long put_cnt = 0, rem_cnt; + unsigned short chunk_size; RESET_ERRMSG; @@ -2678,9 +2680,15 @@ convert_to_string_ex(string_arg); - if (isc_put_segment(IB_STATUS, &ib_blob->bl_handle, (unsigned short) Z_STRLEN_PP(string_arg), Z_STRVAL_PP(string_arg))) { - _php_ibase_error(TSRMLS_C); - RETURN_FALSE; + for (rem_cnt = Z_STRLEN_PP(string_arg); rem_cnt > 0; rem_cnt -= chunk_size) { + + chunk_size = rem_cnt > USHRT_MAX ? USHRT_MAX : rem_cnt; + + if (isc_put_segment(IB_STATUS, &ib_blob->bl_handle, chunk_size, &Z_STRVAL_PP(string_arg)[put_cnt] )) { + _php_ibase_error(TSRMLS_C); + RETURN_FALSE; + } + put_cnt += chunk_size; } RETURN_TRUE; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php