Commit f485db42 authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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;