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 +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 - 5.6.24-2 +- Fix for big integers on gcc5 + * Thu Apr 09 2015 Honza Horak - 5.6.24-1 - Update to 5.6.24