abies Wed Aug 20 18:59:34 2003 EDT
Modified files:
/php-src/ext/interbase interbase.c
Log:
Fix false warning on zero-size BLOB fetch
Index: php-src/ext/interbase/interbase.c
diff -u php-src/ext/interbase/interbase.c:1.159 php-src/ext/interbase/interbase.c:1.160
--- php-src/ext/interbase/interbase.c:1.159 Wed Aug 20 15:47:00 2003
+++ php-src/ext/interbase/interbase.c Wed Aug 20 18:59:33 2003
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: interbase.c,v 1.159 2003/08/20 19:47:00 abies Exp $ */
+/* $Id: interbase.c,v 1.160 2003/08/20 22:59:33 abies Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -502,7 +502,8 @@
if (ib_blob->bl_handle != NULL) { /* blob open*/
if (isc_cancel_blob(IB_STATUS, &ib_blob->bl_handle)) {
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "You can lose data.
Close any blob after reading of writing it. Use ibase_blob_close() before calling
ibase_close()");
+ _php_ibase_module_error("You can lose data. Close any blob
after "
+ "reading from or writing to it. Use ibase_blob_close()
before calling ibase_close()");
}
}
efree(ib_blob);
@@ -682,7 +683,7 @@
php_info_print_table_start();
php_info_print_table_row(2, "Interbase Support", "enabled");
- php_info_print_table_row(2, "Revision", "$Revision: 1.159 $");
+ php_info_print_table_row(2, "Revision", "$Revision: 1.160 $");
#ifdef COMPILE_DL_INTERBASE
php_info_print_table_row(2, "Dynamic Module", "Yes");
#endif
@@ -2500,8 +2501,8 @@
/* {{{ _php_ibase_fetch_hash() */
-#define FETCH_ROW 2
-#define FETCH_ARRAY 4
+#define FETCH_ROW 1
+#define FETCH_ARRAY 2
static void _php_ibase_fetch_hash(INTERNAL_FUNCTION_PARAMETERS, int fetch_type)
{
@@ -2570,7 +2571,8 @@
ibase_blob blob_handle;
unsigned long max_len = 0;
static char bl_items[] =
{isc_info_blob_total_length};
- char bl_info[20], *p;
+ char bl_info[20];
+ unsigned short i;
blob_handle.bl_handle = NULL;
blob_handle.bl_qd = *(ISC_QUAD ISC_FAR
*) var->sqldata;
@@ -2586,25 +2588,29 @@
}
/* find total length of blob's data */
- for (p = bl_info; *p != isc_info_end
&& p < bl_info + sizeof(bl_info);) {
+ for (i = 0; i < sizeof(bl_info); ) {
unsigned short item_len;
- char item = *p++;
+ char item = bl_info[i++];
- item_len = (unsigned short)
isc_vax_integer(p, 2);
- p += 2;
+ if (item == isc_info_end ||
item == isc_info_truncated ||
+ item == isc_info_error
|| i >= sizeof(bl_info)) {
+
+
_php_ibase_module_error("Could not determine BLOB size (internal error)");
+ RETURN_FALSE;
+ }
+
+ item_len = (unsigned short)
isc_vax_integer(&bl_info[i], 2);
+
if (item ==
isc_info_blob_total_length) {
- max_len =
isc_vax_integer(p, item_len);
+ max_len =
isc_vax_integer(&bl_info[i+2], item_len);
break;
}
- p += item_len;
+ i += item_len+2;
}
if (max_len == 0) {
- _php_ibase_module_error("Could
not determine BLOB size (internal error)");
- RETURN_FALSE;
- }
-
- if (_php_ibase_blob_get(&tmp,
&blob_handle, max_len TSRMLS_CC) != SUCCESS) {
+ ZVAL_STRING(&tmp, "", 1);
+ } else if (_php_ibase_blob_get(&tmp,
&blob_handle, max_len TSRMLS_CC) != SUCCESS) {
RETURN_FALSE;
}
@@ -3971,8 +3977,12 @@
unsigned short i;
unsigned long occurred_event[15];
- zval event_name, link_id, return_value, *args[2] = { &event_name,
&link_id };
+ zval event_name, link_id, return_value, *args[2];
+ /* initialize at runtime to satisify picky compilers */
+ args[0] = &event_name;
+ args[1] = &link_id;
+
/* copy the updated results into the result buffer */
memcpy(event->result_buffer, result_buf, buffer_size);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php