hhorak pushed to community-mysql (f22). "Fix for big integers on gcc5"

notifications at fedoraproject.org notifications at fedoraproject.org
Fri Apr 10 14:04:43 UTC 2015


>From 51a58b521603381a2e945d9c84e931bdb97c17fb Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak at redhat.com>
Date: Fri, 10 Apr 2015 13:09:48 +0200
Subject: Fix for big integers on gcc5


diff --git a/community-mysql-gcc5.patch b/community-mysql-gcc5.patch
new file mode 100644
index 0000000..679f6d8
--- /dev/null
+++ b/community-mysql-gcc5.patch
@@ -0,0 +1,60 @@
+commit b377595b246be1de01c37f1d0269b5821e19b3fb
+Author: Tor Didriksen <tor.didriksen at oracle.com>
+Date:   Wed Apr 8 16:53:55 2015 +0200
+
+    Bug#20768820 MAIN.BIGINT TEST FAILS WHEN BUILT WITH GCC 5 IN RELEASE BUILD
+    
+    Problem: with gcc5 in optmized mode, (- LLONG_MIN ) yields integer overflow.
+    Fix: In ull2dec() change the loop which counts the number of decimal_digit_t's
+    (cherry picked from commit b37d8bcc24f82f8e15c5f6e2243c8937af74acb7)
+
+diff --git a/strings/decimal.c b/strings/decimal.c
+index 0d47241..ccb4a6b 100644
+--- a/strings/decimal.c
++++ b/strings/decimal.c
+@@ -1064,26 +1064,34 @@ int double2decimal(double from, decimal_t *to)
+ 
+ static int ull2dec(ulonglong from, decimal_t *to)
+ {
+-  int intg1, error=E_DEC_OK;
+-  ulonglong x=from;
++  int intg1;
++  int error= E_DEC_OK;
++  ulonglong x= from;
+   dec1 *buf;
+ 
+   sanity(to);
+ 
+-  for (intg1=1; from >= DIG_BASE; intg1++, from/=DIG_BASE) ;
++  if (from == 0)
++    intg1= 1;
++  else
++  {
++    /* Count the number of decimal_digit_t's we need. */
++    for (intg1= 0; from != 0; intg1++, from/= DIG_BASE)
++      ;
++  }
+   if (unlikely(intg1 > to->len))
+   {
+-    intg1=to->len;
+-    error=E_DEC_OVERFLOW;
++    intg1= to->len;
++    error= E_DEC_OVERFLOW;
+   }
+-  to->frac=0;
+-  to->intg=intg1*DIG_PER_DEC1;
++  to->frac= 0;
++  to->intg= intg1 * DIG_PER_DEC1;
+ 
+-  for (buf=to->buf+intg1; intg1; intg1--)
++  for (buf= to->buf + intg1; intg1; intg1--)
+   {
+-    ulonglong y=x/DIG_BASE;
+-    *--buf=(dec1)(x-y*DIG_BASE);
+-    x=y;
++    ulonglong y= x / DIG_BASE;
++    *--buf=(dec1)(x - y * DIG_BASE);
++    x= y;
+   }
+   return error;
+ }
diff --git a/community-mysql.spec b/community-mysql.spec
index 7d0f7f2..6712999 100644
--- a/community-mysql.spec
+++ b/community-mysql.spec
@@ -78,7 +78,7 @@
 
 Name:             community-mysql
 Version:          5.6.24
-Release:          1%{?with_debug:.debug}%{?dist}
+Release:          2%{?with_debug:.debug}%{?dist}
 Summary:          MySQL client programs and shared libraries
 Group:            Applications/Databases
 URL:              http://www.mysql.com
@@ -119,6 +119,7 @@ Patch7:           %{pkgnamepatch}-dh1024.patch
 Patch8:           %{pkgnamepatch}-scripts.patch
 Patch9:           %{pkgnamepatch}-install-db-sharedir.patch
 Patch10:          %{pkgnamepatch}-paths.patch
+Patch11:          %{pkgnamepatch}-gcc5.patch
 
 # Patches specific for this mysql package
 Patch51:          %{pkgnamepatch}-chain-certs.patch
@@ -392,6 +393,7 @@ the MySQL sources.
 %patch8 -p1
 %patch9 -p1
 %patch10 -p1
+%patch11 -p1
 %patch51 -p1
 %patch52 -p1
 %patch53 -p1
@@ -949,6 +951,9 @@ fi
 %endif
 
 %changelog
+* Fri Apr 10 2015 Honza Horak <hhorak at redhat.com> - 5.6.24-2
+- Fix for big integers on gcc5
+
 * Thu Apr 09 2015 Honza Horak <hhorak at redhat.com> - 5.6.24-1
 - Update to 5.6.24
 
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/community-mysql.git/commit/?h=f22&id=51a58b521603381a2e945d9c84e931bdb97c17fb


More information about the scm-commits mailing list