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

Reply via email to