commit:     bb4c53415c23a7a2e70f97f0690afad9ea06bb8f
Author:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 16 09:15:58 2017 +0000
Commit:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Fri Jun 16 09:36:29 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb4c5341

media-libs/kvazaar: backport upstream fix to build with gcc7.

Package-Manager: Portage-2.3.6, Repoman-2.3.2

 media-libs/kvazaar/files/gcc7.patch     | 46 +++++++++++++++++++++++++++++++++
 media-libs/kvazaar/kvazaar-1.1.0.ebuild |  1 +
 2 files changed, 47 insertions(+)

diff --git a/media-libs/kvazaar/files/gcc7.patch 
b/media-libs/kvazaar/files/gcc7.patch
new file mode 100644
index 00000000000..12ff8ad00ff
--- /dev/null
+++ b/media-libs/kvazaar/files/gcc7.patch
@@ -0,0 +1,46 @@
+commit 47a9f0de049e77e866ea5bdd4bc7c795ea6dd641
+Author: Ari Lemmetti <ari.lemme...@gmail.com>
+Date:   Tue Apr 11 12:57:22 2017 +0300
+
+    Modify and use FILL_ARRAY macro to prevent warning on GCC 7
+    
+    Following warning was given and is false positive
+    
+    error: 'memset' used with length equal to number of elements without 
multiplication by element size [-Werror=memset-elt-size]
+
+diff --git a/src/global.h b/src/global.h
+index bedcd49..5181674 100644
+--- a/src/global.h
++++ b/src/global.h
+@@ -219,7 +219,11 @@ typedef int16_t coeff_t;
+ // Fill a structure or a static array with val bytes.
+ #define FILL(var, val) memset(&(var), (val), sizeof(var))
+ // Fill a number of elements in an array with val bytes.
+-#define FILL_ARRAY(ar, val, size) memset((ar), (val), (size) * sizeof(*(ar)))
++#define FILL_ARRAY(ar, val, size) \
++{\
++  void *temp_ptr = (void*)(ar);\
++  memset((temp_ptr), (val), (size) * sizeof(*(ar)));\
++}
+ 
+ #define FREE_POINTER(pointer) { free((void*)pointer); pointer = NULL; }
+ #define MOVE_POINTER(dst_pointer,src_pointer) { dst_pointer = src_pointer; 
src_pointer = NULL; }
+diff --git a/src/rdo.c b/src/rdo.c
+index 52305fd..2579f28 100644
+--- a/src/rdo.c
++++ b/src/rdo.c
+@@ -558,10 +558,10 @@ void kvz_rdoq(encoder_state_t * const state, coeff_t 
*coef, coeff_t *dest_coeff,
+   // Explicitly tell the only possible numbers of elements to be zeroed.
+   // Hope the compiler is able to utilize this information.
+   switch (cg_num) {
+-    case  1: memset(sig_coeffgroup_flag, 0,  1 * 
sizeof(sig_coeffgroup_flag[0])); break;
+-    case  4: memset(sig_coeffgroup_flag, 0,  4 * 
sizeof(sig_coeffgroup_flag[0])); break;
+-    case 16: memset(sig_coeffgroup_flag, 0, 16 * 
sizeof(sig_coeffgroup_flag[0])); break;
+-    case 64: memset(sig_coeffgroup_flag, 0, 64 * 
sizeof(sig_coeffgroup_flag[0])); break;
++    case  1: FILL_ARRAY(sig_coeffgroup_flag, 0,  1); break;
++    case  4: FILL_ARRAY(sig_coeffgroup_flag, 0,  4); break;
++    case 16: FILL_ARRAY(sig_coeffgroup_flag, 0, 16); break;
++    case 64: FILL_ARRAY(sig_coeffgroup_flag, 0, 64); break;
+     default: assert(0 && "There should be 1, 4, 16 or 64 coefficient groups");
+   }
+ 

diff --git a/media-libs/kvazaar/kvazaar-1.1.0.ebuild 
b/media-libs/kvazaar/kvazaar-1.1.0.ebuild
index 750b6feced9..959e9d94b3d 100644
--- a/media-libs/kvazaar/kvazaar-1.1.0.ebuild
+++ b/media-libs/kvazaar/kvazaar-1.1.0.ebuild
@@ -38,6 +38,7 @@ DEPEND="${DEPEND}
        abi_x86_64? ( ${ASM_DEP} )"
 
 src_prepare() {
+       epatch "${FILESDIR}/gcc7.patch"
        eautoreconf
        if use test && [ "${PV#9999}" = "${PV}" ]; then
                # https://bugs.gentoo.org/show_bug.cgi?id=595932

Reply via email to