Bug #18053212 MYSQL_GET_SERVER_VERSION() CALL WITHOUT A VALID CONNECTION RESULTS IN SEG FAULT
When there is no connection mysql_get_server_version() will return 0 and report CR_COMMANDS_OUT_OF_SYNC error.
This commit is contained in:
parent
1b74f2e3da
commit
22e9aa1c1a
@ -4230,17 +4230,27 @@ const char * STDCALL mysql_error(MYSQL *mysql)
|
|||||||
|
|
||||||
RETURN
|
RETURN
|
||||||
Signed number > 323000
|
Signed number > 323000
|
||||||
|
Zero if there is no connection
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ulong STDCALL
|
ulong STDCALL
|
||||||
mysql_get_server_version(MYSQL *mysql)
|
mysql_get_server_version(MYSQL *mysql)
|
||||||
{
|
{
|
||||||
uint major, minor, version;
|
ulong major= 0, minor= 0, version= 0;
|
||||||
char *pos= mysql->server_version, *end_pos;
|
|
||||||
major= (uint) strtoul(pos, &end_pos, 10); pos=end_pos+1;
|
if (mysql->server_version)
|
||||||
minor= (uint) strtoul(pos, &end_pos, 10); pos=end_pos+1;
|
{
|
||||||
version= (uint) strtoul(pos, &end_pos, 10);
|
char *pos= mysql->server_version, *end_pos;
|
||||||
return (ulong) major*10000L+(ulong) (minor*100+version);
|
major= strtoul(pos, &end_pos, 10); pos=end_pos+1;
|
||||||
|
minor= strtoul(pos, &end_pos, 10); pos=end_pos+1;
|
||||||
|
version= strtoul(pos, &end_pos, 10);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
set_mysql_error(mysql, CR_COMMANDS_OUT_OF_SYNC, unknown_sqlstate);
|
||||||
|
}
|
||||||
|
|
||||||
|
return major*10000 + minor*100 + version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user