svn: /php/php-src/ branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c trunk/ext/mysqlnd/mysqlnd_result.c
| From: | Andrey Hristov | Date: | Mon, 03 May 2010 19:02:48 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c trunk/ext/mysqlnd/mysqlnd_result.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-62523@lists.php.net to get a copy of this message | ||
andrey Mon, 03 May 2010 19:02:48 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=298922
Log:
Handle OOM in mysqlnd_fetch_row_unbuffered_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 18:53:10 UTC (rev 298921)
+++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_result.c 2010-05-03 19:02:48 UTC (rev 298922)
@@ -646,27 +646,30 @@
result->conn->stats TSRMLS_CC);
retrow = mnd_malloc(result->field_count * sizeof(char *));
+ if (retrow) {
+ for (i = 0; i < field_count; i++, field++, zend_hash_key++) {
+ zval *data = result->unbuf->last_row_data[i];
+ unsigned int len;
- for (i = 0; i < field_count; i++, field++, zend_hash_key++) {
- zval *data = result->unbuf->last_row_data[i];
- unsigned int len;
+ if (Z_TYPE_P(data) != IS_NULL) {
+ convert_to_string(data);
+ retrow[i] = Z_STRVAL_P(data);
+ len = Z_STRLEN_P(data);
+ } else {
+ retrow[i] = NULL;
+ len = 0;
+ }
- if (Z_TYPE_P(data) != IS_NULL) {
- convert_to_string(data);
- retrow[i] = Z_STRVAL_P(data);
- len = Z_STRLEN_P(data);
- } else {
- retrow[i] = NULL;
- len = 0;
- }
+ if (lengths) {
+ lengths[i] = len;
+ }
- if (lengths) {
- lengths[i] = len;
+ if (field->max_length < len) {
+ field->max_length = len;
+ }
}
-
- if (field->max_length < len) {
- field->max_length = len;
- }
+ } else {
+ SET_OOM_ERROR(result->conn->error_info);
}
}
} else if (ret == FAIL) {
Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c
===================================================================
--- php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c 2010-05-03 18:53:10 UTC (rev 298921)
+++ php/php-src/trunk/ext/mysqlnd/mysqlnd_result.c 2010-05-03 19:02:48 UTC (rev 298922)
@@ -646,27 +646,30 @@
result->conn->stats TSRMLS_CC);
retrow = mnd_malloc(result->field_count * sizeof(char *));
+ if (retrow) {
+ for (i = 0; i < field_count; i++, field++, zend_hash_key++) {
+ zval *data = result->unbuf->last_row_data[i];
+ unsigned int len;
- for (i = 0; i < field_count; i++, field++, zend_hash_key++) {
- zval *data = result->unbuf->last_row_data[i];
- unsigned int len;
+ if (Z_TYPE_P(data) != IS_NULL) {
+ convert_to_string(data);
+ retrow[i] = Z_STRVAL_P(data);
+ len = Z_STRLEN_P(data);
+ } else {
+ retrow[i] = NULL;
+ len = 0;
+ }
- if (Z_TYPE_P(data) != IS_NULL) {
- convert_to_string(data);
- retrow[i] = Z_STRVAL_P(data);
- len = Z_STRLEN_P(data);
- } else {
- retrow[i] = NULL;
- len = 0;
- }
+ if (lengths) {
+ lengths[i] = len;
+ }
- if (lengths) {
- lengths[i] = len;
+ if (field->max_length < len) {
+ field->max_length = len;
+ }
}
-
- if (field->max_length < len) {
- field->max_length = len;
- }
+ } else {
+ SET_OOM_ERROR(result->conn->error_info);
}
}
} else if (ret == FAIL) {