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) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php