andrey                                   Mon, 03 May 2010 19:09:45 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=298925

Log:
Handle OOM in mysqlnd_fetch_row_buffered_c()

Changed paths:
    U   php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c
    U   php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c

Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c   2010-05-03 
19:08:26 UTC (rev 298924)
+++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c   2010-05-03 
19:09:45 UTC (rev 298925)
@@ -939,20 +939,23 @@
                        }
                }

+               set->data_cursor += result->meta->field_count;
+               
MYSQLND_INC_GLOBAL_STATISTIC(STAT_ROWS_FETCHED_FROM_CLIENT_NORMAL_BUF);
+
                ret = mnd_malloc(result->field_count * sizeof(char *));
+               if (ret) {
+                       for (i = 0; i < result->field_count; i++, field++, 
zend_hash_key++) {
+                               zval *data = current_row[i];

-               for (i = 0; i < result->field_count; i++, field++, 
zend_hash_key++) {
-                       zval *data = current_row[i];
-
-                       if (Z_TYPE_P(data) != IS_NULL) {
-                               convert_to_string(data);
-                               ret[i] = Z_STRVAL_P(data);
-                       } else {
-                               ret[i] = NULL;
+                               if (Z_TYPE_P(data) != IS_NULL) {
+                                       convert_to_string(data);
+                                       ret[i] = Z_STRVAL_P(data);
+                               } else {
+                                       ret[i] = NULL;
+                               }
                        }
                }
-               set->data_cursor += result->meta->field_count;
-               
MYSQLND_INC_GLOBAL_STATISTIC(STAT_ROWS_FETCHED_FROM_CLIENT_NORMAL_BUF);
+               /* there is no conn handle in this function thus we can't set 
OOM in error_info */
        } else {
                set->data_cursor = NULL;
                DBG_INF("EOF reached");

Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c
===================================================================
--- php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c      2010-05-03 19:08:26 UTC 
(rev 298924)
+++ php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c      2010-05-03 19:09:45 UTC 
(rev 298925)
@@ -939,20 +939,23 @@
                        }
                }

+               set->data_cursor += result->meta->field_count;
+               
MYSQLND_INC_GLOBAL_STATISTIC(STAT_ROWS_FETCHED_FROM_CLIENT_NORMAL_BUF);
+
                ret = mnd_malloc(result->field_count * sizeof(char *));
+               if (ret) {
+                       for (i = 0; i < result->field_count; i++, field++, 
zend_hash_key++) {
+                               zval *data = current_row[i];

-               for (i = 0; i < result->field_count; i++, field++, 
zend_hash_key++) {
-                       zval *data = current_row[i];
-
-                       if (Z_TYPE_P(data) != IS_NULL) {
-                               convert_to_string(data);
-                               ret[i] = Z_STRVAL_P(data);
-                       } else {
-                               ret[i] = NULL;
+                               if (Z_TYPE_P(data) != IS_NULL) {
+                                       convert_to_string(data);
+                                       ret[i] = Z_STRVAL_P(data);
+                               } else {
+                                       ret[i] = NULL;
+                               }
                        }
                }
-               set->data_cursor += result->meta->field_count;
-               
MYSQLND_INC_GLOBAL_STATISTIC(STAT_ROWS_FETCHED_FROM_CLIENT_NORMAL_BUF);
+               /* there is no conn handle in this function thus we can't set 
OOM in error_info */
        } else {
                set->data_cursor = NULL;
                DBG_INF("EOF reached");

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to