Commit f485db42 authored by unknown's avatar unknown

A fix for Bug#9443 "mysql_client_test fails on linux and some solaris

platforms": yet another issue with floating pointer comparisons.
The fix uses the workaround with volatiles.


sql/item_cmpfunc.cc:
  A fix for the failing mysql_client_test on some Intel platforms
  when compiled with optimization.
  We don't use -ffloat-store compileation as it may slow all
  floating point operations.
parent 30c85129
......@@ -393,10 +393,16 @@ int Arg_comparator::compare_e_binary_string()
int Arg_comparator::compare_real()
{
double val1= (*a)->val();
/*
Fix yet another manifestation of Bug#2338. 'Volatile' will instruct
gcc to flush double values out of 80-bit Intel FPU registers before
performing the comparison.
*/
volatile double val1, val2;
val1= (*a)->val();
if (!(*a)->null_value)
{
double val2= (*b)->val();
val2= (*b)->val();
if (!(*b)->null_value)
{
owner->null_value= 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment