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