mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Merge bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/my/mysql-5.0 client/mysql.cc: Auto merged client/mysql_upgrade.c: Auto merged client/mysqltest.c: Auto merged extra/yassl/include/yassl_imp.hpp: Auto merged extra/yassl/include/yassl_int.hpp: Auto merged extra/yassl/taocrypt/include/algebra.hpp: Auto merged extra/yassl/taocrypt/include/des.hpp: Auto merged extra/yassl/taocrypt/include/modes.hpp: Auto merged extra/yassl/taocrypt/src/aes.cpp: Auto merged extra/yassl/taocrypt/src/algebra.cpp: Auto merged extra/yassl/taocrypt/test/test.cpp: Auto merged include/my_sys.h: Auto merged libmysql/libmysql.c: Auto merged libmysqld/lib_sql.cc: Auto merged myisam/mi_open.c: Auto merged myisam/myisampack.c: Auto merged mysql-test/r/mysqltest.result: Auto merged mysql-test/t/mysqltest.test: Auto merged ndb/src/common/util/File.cpp: Auto merged ndb/src/common/util/socket_io.cpp: Auto merged ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp: Auto merged ndb/src/kernel/blocks/dbdict/Dbdict.cpp: Auto merged ndb/src/kernel/blocks/dbdih/Dbdih.hpp: Auto merged ndb/src/kernel/blocks/dblqh/Dblqh.hpp: Auto merged ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: Auto merged ndb/src/kernel/blocks/dbtc/Dbtc.hpp: Auto merged ndb/src/kernel/blocks/dbtup/Dbtup.hpp: Auto merged ndb/src/mgmsrv/Services.cpp: Auto merged ndb/tools/ndb_config.cpp: Auto merged sql/field.cc: Auto merged sql/field.h: Auto merged sql/ha_ndbcluster.cc: Auto merged sql/handler.cc: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_func.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/item_subselect.h: Auto merged sql/item_sum.cc: Auto merged sql/item_timefunc.cc: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/opt_range.cc: Auto merged sql/set_var.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_load.cc: Auto merged sql-common/my_time.c: Auto merged sql/sql_string.h: Auto merged sql/sql_table.cc: Auto merged sql/sql_trigger.cc: Auto merged sql/sql_yacc.yy: Auto merged sql/table.cc: Auto merged strings/strtod.c: Auto merged tests/mysql_client_test.c: Auto merged extra/yassl/taocrypt/include/rsa.hpp: manual merge mysql-test/t/mysql.test: manual merge sql/sql_parse.cc: manual merge
This commit is contained in:
@@ -57,7 +57,7 @@ double my_strtod(const char *str, char **end_ptr, int *error)
|
||||
{
|
||||
double result= 0.0;
|
||||
uint negative= 0, ndigits, dec_digits= 0, neg_exp= 0;
|
||||
int exp= 0, digits_after_dec_point= 0, tmp_exp;
|
||||
int exponent= 0, digits_after_dec_point= 0, tmp_exp;
|
||||
const char *old_str, *end= *end_ptr, *start_of_number;
|
||||
char next_char;
|
||||
my_bool overflow=0;
|
||||
@@ -130,24 +130,25 @@ double my_strtod(const char *str, char **end_ptr, int *error)
|
||||
if ((next_char == 'e' || next_char == 'E') &&
|
||||
dec_digits + ndigits != 0 && str < end-1)
|
||||
{
|
||||
const char *old_str= str++;
|
||||
const char *old_str2= str++;
|
||||
|
||||
if ((neg_exp= (*str == '-')) || *str == '+')
|
||||
str++;
|
||||
|
||||
if (str == end || !my_isdigit(&my_charset_latin1, *str))
|
||||
str= old_str;
|
||||
str= old_str2;
|
||||
else
|
||||
{
|
||||
do
|
||||
{
|
||||
if (exp < 9999) /* prot. against exp overfl. */
|
||||
exp= exp*10 + (*str - '0');
|
||||
if (exponent < 9999) /* prot. against exp overfl. */
|
||||
exponent= exponent*10 + (*str - '0');
|
||||
str++;
|
||||
} while (str < end && my_isdigit(&my_charset_latin1, *str));
|
||||
}
|
||||
}
|
||||
tmp_exp= neg_exp ? exp + digits_after_dec_point : exp - digits_after_dec_point;
|
||||
tmp_exp= (neg_exp ? exponent + digits_after_dec_point :
|
||||
exponent - digits_after_dec_point);
|
||||
if (tmp_exp)
|
||||
{
|
||||
int order;
|
||||
@@ -157,7 +158,7 @@ double my_strtod(const char *str, char **end_ptr, int *error)
|
||||
where f is the resulting floating point number and 1 <= C < 10.
|
||||
Here we compute the modulus
|
||||
*/
|
||||
order= exp + (neg_exp ? -1 : 1) * (ndigits - 1);
|
||||
order= exponent + (neg_exp ? -1 : 1) * (ndigits - 1);
|
||||
if (order < 0)
|
||||
order= -order;
|
||||
if (order >= MAX_DBL_EXP && !neg_exp && result)
|
||||
@@ -172,18 +173,18 @@ double my_strtod(const char *str, char **end_ptr, int *error)
|
||||
}
|
||||
}
|
||||
|
||||
exp= tmp_exp;
|
||||
if (exp < 0)
|
||||
exponent= tmp_exp;
|
||||
if (exponent < 0)
|
||||
{
|
||||
exp= -exp;
|
||||
exponent= -exponent;
|
||||
neg_exp= 1; /* neg_exp was 0 before */
|
||||
}
|
||||
while (exp >= 100)
|
||||
while (exponent >= 100)
|
||||
{
|
||||
result= neg_exp ? result/1.0e100 : result*1.0e100;
|
||||
exp-= 100;
|
||||
exponent-= 100;
|
||||
}
|
||||
scaler= scaler10[exp/10]*scaler1[exp%10];
|
||||
scaler= scaler10[exponent/10]*scaler1[exponent%10];
|
||||
if (neg_exp)
|
||||
result/= scaler;
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user