summaryrefslogtreecommitdiff
path: root/media-libs/kvazaar/files/gcc7.patch
blob: 12ff8ad00ff79452095a79fa9f81ecd342dd5817 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
commit 47a9f0de049e77e866ea5bdd4bc7c795ea6dd641
Author: Ari Lemmetti <ari.lemmetti@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");
   }