| From 47a9f0de049e77e866ea5bdd4bc7c795ea6dd641 Mon Sep 17 00:00:00 2001 |
| From: Ari Lemmetti <ari.lemmetti@gmail.com> |
| Date: Tue, 11 Apr 2017 12:57:22 +0300 |
| Subject: [PATCH] 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] |
| |
| Signed-off-by: Baruch Siach <baruch@tkos.co.il> |
| --- |
| Upstream commit 47a9f0de049e7. |
| |
| src/global.h | 6 +++++- |
| src/rdo.c | 8 ++++---- |
| 2 files changed, 9 insertions(+), 5 deletions(-) |
| |
| diff --git a/src/global.h b/src/global.h |
| index bedcd49c2e02..518167443f35 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 52305fd72fab..2579f2808441 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"); |
| } |
| |
| -- |
| 2.13.2 |
| |