georg Fri Jan 28 12:35:38 2005 EDT Modified files: /php-src/ext/mysqli mysqli_api.c mysqli_prop.c Log: fixed a bug in mysql_affected_rows and mysql_stmt_affected_rows in case affected_rows function returns (my_ulonglong) -1 for errors. (Thanks to Antony Dovgal for reporting this bug) http://cvs.php.net/diff.php/php-src/ext/mysqli/mysqli_api.c?r1=1.100&r2=1.101&ty=u Index: php-src/ext/mysqli/mysqli_api.c diff -u php-src/ext/mysqli/mysqli_api.c:1.100 php-src/ext/mysqli/mysqli_api.c:1.101 --- php-src/ext/mysqli/mysqli_api.c:1.100 Thu Jan 27 05:18:28 2005 +++ php-src/ext/mysqli/mysqli_api.c Fri Jan 28 12:35:37 2005 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli_api.c,v 1.100 2005/01/27 10:18:28 georg Exp $ + $Id: mysqli_api.c,v 1.101 2005/01/28 17:35:37 georg Exp $ */ #ifdef HAVE_CONFIG_H @@ -44,6 +44,9 @@ MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link"); rc = mysql_affected_rows(mysql->mysql); + if (rc == (my_ulonglong) -1) { + RETURN_LONG(-1); + } MYSQLI_RETURN_LONG_LONG(rc); } /* }}} */ @@ -1445,6 +1448,9 @@ MYSQLI_FETCH_RESOURCE(stmt, MY_STMT *, &mysql_stmt, "mysqli_stmt"); rc = mysql_stmt_affected_rows(stmt->stmt); + if (rc == (my_ulonglong) -1) { + RETURN_LONG(-1); + } MYSQLI_RETURN_LONG_LONG(rc) } /* }}} */ http://cvs.php.net/diff.php/php-src/ext/mysqli/mysqli_prop.c?r1=1.19&r2=1.20&ty=u Index: php-src/ext/mysqli/mysqli_prop.c diff -u php-src/ext/mysqli/mysqli_prop.c:1.19 php-src/ext/mysqli/mysqli_prop.c:1.20 --- php-src/ext/mysqli/mysqli_prop.c:1.19 Fri Jan 7 09:59:59 2005 +++ php-src/ext/mysqli/mysqli_prop.c Fri Jan 28 12:35:37 2005 @@ -15,7 +15,7 @@ | Author: Georg Richter <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ - $Id: mysqli_prop.c,v 1.19 2005/01/07 14:59:59 georg Exp $ + $Id: mysqli_prop.c,v 1.20 2005/01/28 17:35:37 georg Exp $ */ #ifdef HAVE_CONFIG_H @@ -128,9 +128,36 @@ } /* }}} */ +/* {{{ property link_affected_rows_read */ +int link_affected_rows_read(mysqli_object *obj, zval **retval TSRMLS_DC) +{ + MY_MYSQL *mysql; + my_ulonglong rc; + + ALLOC_ZVAL(*retval); + CHECK_OBJECT(); + + mysql = (MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; + rc = mysql_affected_rows(mysql->mysql); + + if (rc == (my_ulonglong)-1) { + ZVAL_LONG(*retval, -1); + return SUCCESS; + } + + if (rc < LONG_MAX) { + ZVAL_LONG(*retval, rc); + } else { + char ret[40]; + sprintf(ret, "%llu", (my_ulonglong) rc); + ZVAL_STRING(*retval, ret, 1); + } + + return SUCCESS; +} +/* }}} */ /* link properties */ -MYSQLI_MAP_PROPERTY_FUNC_LONG(link_affected_rows_read, mysql_affected_rows, MYSQLI_GET_MYSQL(), my_ulonglong); MYSQLI_MAP_PROPERTY_FUNC_LONG(link_errno_read, mysql_errno, MYSQLI_GET_MYSQL(), ulong); MYSQLI_MAP_PROPERTY_FUNC_STRING(link_error_read, mysql_error, MYSQLI_GET_MYSQL()); MYSQLI_MAP_PROPERTY_FUNC_LONG(link_field_count_read, mysql_field_count, MYSQLI_GET_MYSQL(), ulong); @@ -216,7 +243,35 @@ } /* }}} */ -MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_affected_rows_read, mysql_stmt_affected_rows, MYSQLI_GET_STMT(), my_ulonglong); +/* {{{ property stmt_affected_rows_read */ +int stmt_affected_rows_read(mysqli_object *obj, zval **retval TSRMLS_DC) +{ + MY_STMT *stmt; + my_ulonglong rc; + + ALLOC_ZVAL(*retval); + CHECK_OBJECT(); + + stmt = (MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; + rc = mysql_stmt_affected_rows(stmt->stmt); + + if (rc == (my_ulonglong)-1) { + ZVAL_LONG(*retval, -1); + return SUCCESS; + } + + if (rc < LONG_MAX) { + ZVAL_LONG(*retval, rc); + } else { + char ret[40]; + sprintf(ret, "%llu", (my_ulonglong) rc); + ZVAL_STRING(*retval, ret, 1); + } + + return SUCCESS; +} +/* }}} */ + MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_insert_id_read, mysql_stmt_insert_id, MYSQLI_GET_STMT(), my_ulonglong); MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_num_rows_read, mysql_stmt_num_rows, MYSQLI_GET_STMT(), my_ulonglong); MYSQLI_MAP_PROPERTY_FUNC_LONG(stmt_param_count_read, mysql_stmt_param_count, MYSQLI_GET_STMT(), ulong);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php