andrey Fri, 12 Aug 2011 14:55:00 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=314838
Log:
prevent a crash if cs is NULL, which can happen with MS and lazy connections
Changed paths:
U php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_nonapi.c
U php/php-src/branches/PHP_5_4/ext/mysqli/mysqli_nonapi.c
U php/php-src/trunk/ext/mysqli/mysqli_nonapi.c
Modified: php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_nonapi.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_nonapi.c 2011-08-12
14:32:14 UTC (rev 314837)
+++ php/php-src/branches/PHP_5_3/ext/mysqli/mysqli_nonapi.c 2011-08-12
14:55:00 UTC (rev 314838)
@@ -916,7 +916,6 @@
}
MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);
- object_init(return_value);
#if !defined(MYSQLI_USE_MYSQLND)
mysql_get_character_set_info(mysql->mysql, &cs);
@@ -930,6 +929,10 @@
comment = cs.comment;
#else
cs = mysql->mysql->charset;
+ if (!cs) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The connection has
no charset associated");
+ RETURN_NULL();
+ }
name = cs->name;
collation = cs->collation;
minlength = cs->char_minlen;
@@ -938,6 +941,7 @@
comment = cs->comment;
state = 1; /* all charsets are compiled in */
#endif
+ object_init(return_value);
add_property_string(return_value, "charset", (name) ? (char *)name :
"", 1);
add_property_string(return_value, "collation",(collation) ? (char
*)collation : "", 1);
Modified: php/php-src/branches/PHP_5_4/ext/mysqli/mysqli_nonapi.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/mysqli/mysqli_nonapi.c 2011-08-12
14:32:14 UTC (rev 314837)
+++ php/php-src/branches/PHP_5_4/ext/mysqli/mysqli_nonapi.c 2011-08-12
14:55:00 UTC (rev 314838)
@@ -992,7 +992,6 @@
}
MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);
- object_init(return_value);
#if !defined(MYSQLI_USE_MYSQLND)
mysql_get_character_set_info(mysql->mysql, &cs);
@@ -1006,6 +1005,10 @@
comment = cs.comment;
#else
cs = mysql->mysql->charset;
+ if (!cs) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The connection has
no charset associated");
+ RETURN_NULL();
+ }
name = cs->name;
collation = cs->collation;
minlength = cs->char_minlen;
@@ -1014,6 +1017,7 @@
comment = cs->comment;
state = 1; /* all charsets are compiled in */
#endif
+ object_init(return_value);
add_property_string(return_value, "charset", (name) ? (char *)name :
"", 1);
add_property_string(return_value, "collation",(collation) ? (char
*)collation : "", 1);
Modified: php/php-src/trunk/ext/mysqli/mysqli_nonapi.c
===================================================================
--- php/php-src/trunk/ext/mysqli/mysqli_nonapi.c 2011-08-12 14:32:14 UTC
(rev 314837)
+++ php/php-src/trunk/ext/mysqli/mysqli_nonapi.c 2011-08-12 14:55:00 UTC
(rev 314838)
@@ -992,7 +992,6 @@
}
MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID);
- object_init(return_value);
#if !defined(MYSQLI_USE_MYSQLND)
mysql_get_character_set_info(mysql->mysql, &cs);
@@ -1006,6 +1005,10 @@
comment = cs.comment;
#else
cs = mysql->mysql->charset;
+ if (!cs) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "The connection has
no charset associated");
+ RETURN_NULL();
+ }
name = cs->name;
collation = cs->collation;
minlength = cs->char_minlen;
@@ -1014,6 +1017,7 @@
comment = cs->comment;
state = 1; /* all charsets are compiled in */
#endif
+ object_init(return_value);
add_property_string(return_value, "charset", (name) ? (char *)name :
"", 1);
add_property_string(return_value, "collation",(collation) ? (char
*)collation : "", 1);
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php