summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkyslov <kyslov@google.com>2019-04-11 16:11:34 -0700
committerkyslov <kyslov@google.com>2019-04-11 17:37:15 -0700
commit4ba3098ecb471be486b665c7f8716645ba8e22c6 (patch)
treee7c5cf6903474c043fd404c7b2e973130e57a524
parente8bfbf53174a80440d7251085ac8d8e16ac8ed3c (diff)
downloadlibvpx-4ba3098ecb471be486b665c7f8716645ba8e22c6.tar
libvpx-4ba3098ecb471be486b665c7f8716645ba8e22c6.tar.gz
libvpx-4ba3098ecb471be486b665c7f8716645ba8e22c6.tar.bz2
libvpx-4ba3098ecb471be486b665c7f8716645ba8e22c6.zip
Fix static analysis warnings
With switching to clang-7.0.1 we got new warnings. With this change the warnings are back to 0 for all configurations (excluding warnings in third_party) BUG=webm:1616 Change-Id: I25ceb592c425394e8f14d333fb5680144f892213
-rw-r--r--tools/tiny_ssim.c2
-rw-r--r--vp8/encoder/pickinter.c7
-rw-r--r--vp8/encoder/rdopt.c7
-rw-r--r--vp9/decoder/vp9_decodemv.c2
-rw-r--r--vp9/encoder/vp9_resize.c4
-rw-r--r--vp9/encoder/vp9_subexp.c1
6 files changed, 17 insertions, 6 deletions
diff --git a/tools/tiny_ssim.c b/tools/tiny_ssim.c
index f62f7f57e..ff4634ade 100644
--- a/tools/tiny_ssim.c
+++ b/tools/tiny_ssim.c
@@ -326,6 +326,8 @@ int main(int argc, char *argv[]) {
input_file_t in[2];
double peak = 255.0;
+ memset(in, 0, sizeof(in));
+
if (argc < 2) {
fprintf(stderr,
"Usage: %s file1.{yuv|y4m} file2.{yuv|y4m}"
diff --git a/vp8/encoder/pickinter.c b/vp8/encoder/pickinter.c
index 6bb3cacc5..dc72eed88 100644
--- a/vp8/encoder/pickinter.c
+++ b/vp8/encoder/pickinter.c
@@ -563,7 +563,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
MACROBLOCKD *xd = &x->e_mbd;
MB_MODE_INFO best_mbmode;
- int_mv best_ref_mv_sb[2];
+ int_mv best_ref_mv_sb[2] = { { 0 }, { 0 } };
int_mv mode_mv_sb[2][MB_MODE_COUNT];
int_mv best_ref_mv;
int_mv *mode_mv;
@@ -601,7 +601,7 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
/* search range got from mv_pred(). It uses step_param levels. (0-7) */
int sr = 0;
- unsigned char *plane[4][3];
+ unsigned char *plane[4][3] = { { 0, 0 } };
int ref_frame_map[4];
int sign_bias = 0;
int dot_artifact_candidate = 0;
@@ -630,13 +630,16 @@ void vp8_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
}
}
#endif
+ assert(plane[LAST_FRAME][0] != NULL);
dot_artifact_candidate = check_dot_artifact_candidate(
cpi, x, target_y, stride, plane[LAST_FRAME][0], mb_row, mb_col, 0);
// If not found in Y channel, check UV channel.
if (!dot_artifact_candidate) {
+ assert(plane[LAST_FRAME][1] != NULL);
dot_artifact_candidate = check_dot_artifact_candidate(
cpi, x, target_u, stride_uv, plane[LAST_FRAME][1], mb_row, mb_col, 1);
if (!dot_artifact_candidate) {
+ assert(plane[LAST_FRAME][2] != NULL);
dot_artifact_candidate = check_dot_artifact_candidate(
cpi, x, target_v, stride_uv, plane[LAST_FRAME][2], mb_row, mb_col,
2);
diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c
index 5252e9ee4..79a858e43 100644
--- a/vp8/encoder/rdopt.c
+++ b/vp8/encoder/rdopt.c
@@ -989,7 +989,7 @@ static void rd_check_segment(VP8_COMP *cpi, MACROBLOCK *x, BEST_SEG_INFO *bsi,
br += rate;
for (i = 0; i < label_count; ++i) {
- int_mv mode_mv[B_MODE_COUNT];
+ int_mv mode_mv[B_MODE_COUNT] = { { 0 }, { 0 } };
int best_label_rd = INT_MAX;
B_PREDICTION_MODE mode_selected = ZERO4X4;
int bestlabelyrate = 0;
@@ -1767,7 +1767,7 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
/* search range got from mv_pred(). It uses step_param levels. (0-7) */
int sr = 0;
- unsigned char *plane[4][3];
+ unsigned char *plane[4][3] = { { 0, 0 } };
int ref_frame_map[4];
int sign_bias = 0;
@@ -1850,6 +1850,9 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset,
/* everything but intra */
if (x->e_mbd.mode_info_context->mbmi.ref_frame) {
+ assert(plane[this_ref_frame][0] != NULL &&
+ plane[this_ref_frame][1] != NULL &&
+ plane[this_ref_frame][2] != NULL);
x->e_mbd.pre.y_buffer = plane[this_ref_frame][0];
x->e_mbd.pre.u_buffer = plane[this_ref_frame][1];
x->e_mbd.pre.v_buffer = plane[this_ref_frame][2];
diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c
index 0a781413b..943fe478a 100644
--- a/vp9/decoder/vp9_decodemv.c
+++ b/vp9/decoder/vp9_decodemv.c
@@ -696,7 +696,7 @@ static void read_inter_block_mode_info(VP9Decoder *const pbi,
VP9_COMMON *const cm = &pbi->common;
const BLOCK_SIZE bsize = mi->sb_type;
const int allow_hp = cm->allow_high_precision_mv;
- int_mv best_ref_mvs[2];
+ int_mv best_ref_mvs[2] = { { 0 }, { 0 } };
int ref, is_compound;
uint8_t inter_mode_ctx;
const POSITION *const mv_ref_search = mv_ref_blocks[bsize];
diff --git a/vp9/encoder/vp9_resize.c b/vp9/encoder/vp9_resize.c
index 23a320ae5..7486dee25 100644
--- a/vp9/encoder/vp9_resize.c
+++ b/vp9/encoder/vp9_resize.c
@@ -506,10 +506,12 @@ static void highbd_interpolate(const uint16_t *const input, int inlength,
sub_pel = (y >> (INTERP_PRECISION_BITS - SUBPEL_BITS)) & SUBPEL_MASK;
filter = interp_filters[sub_pel];
sum = 0;
- for (k = 0; k < INTERP_TAPS; ++k)
+ for (k = 0; k < INTERP_TAPS; ++k) {
+ assert(int_pel - INTERP_TAPS / 2 + 1 + k < inlength);
sum += filter[k] * input[(int_pel - INTERP_TAPS / 2 + 1 + k < 0
? 0
: int_pel - INTERP_TAPS / 2 + 1 + k)];
+ }
*optr++ = clip_pixel_highbd(ROUND_POWER_OF_TWO(sum, FILTER_BITS), bd);
}
// Middle part.
diff --git a/vp9/encoder/vp9_subexp.c b/vp9/encoder/vp9_subexp.c
index e8212ce05..19bbd5373 100644
--- a/vp9/encoder/vp9_subexp.c
+++ b/vp9/encoder/vp9_subexp.c
@@ -71,6 +71,7 @@ static int remap_prob(int v, int m) {
else
i = recenter_nonneg(MAX_PROB - 1 - v, MAX_PROB - 1 - m) - 1;
+ assert(i >= 0 && (size_t)i < sizeof(map_table));
i = map_table[i];
return i;
}