From a77fc521caeba27b3f7693d13d6b2fd4d02c2a1a Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Thu, 2 Jul 2015 10:48:05 +0300 Subject: [PATCH] Don't use side effects in the macro PUT_BITS_SEV parameters If ENTROPY_TRACE is defined, the value parameter gets evaluated twice. Since this parameter includes ++, the pointer gets incremented twice. This fixes encoding with trace enabled. Change-Id: I3d71ac33d007301e488d264a33c7b5c4d4ff2b56 --- encoder/ih264e_cavlc.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/encoder/ih264e_cavlc.c b/encoder/ih264e_cavlc.c index 5d819d9..7491480 100644 --- a/encoder/ih264e_cavlc.c +++ b/encoder/ih264e_cavlc.c @@ -1718,13 +1718,17 @@ IH264E_ERROR_T ih264e_write_bslice_mb_cavlc(entropy_ctxt_t *ps_ent_ctxt) { if (i4_mb_part_pred_mode != PRED_L1)/* || PRED_BI */ { - PUT_BITS_SEV(ps_bitstream, *pi2_mvd_ptr++, error_status, "mv l0 x"); - PUT_BITS_SEV(ps_bitstream, *pi2_mvd_ptr++, error_status, "mv l0 y"); + PUT_BITS_SEV(ps_bitstream, *pi2_mvd_ptr, error_status, "mv l0 x"); + pi2_mvd_ptr++; + PUT_BITS_SEV(ps_bitstream, *pi2_mvd_ptr, error_status, "mv l0 y"); + pi2_mvd_ptr++; } if (i4_mb_part_pred_mode != PRED_L0)/* || PRED_BI */ { - PUT_BITS_SEV(ps_bitstream, *pi2_mvd_ptr++, error_status, "mv l1 x"); - PUT_BITS_SEV(ps_bitstream, *pi2_mvd_ptr++, error_status, "mv l1 y"); + PUT_BITS_SEV(ps_bitstream, *pi2_mvd_ptr, error_status, "mv l1 x"); + pi2_mvd_ptr++; + PUT_BITS_SEV(ps_bitstream, *pi2_mvd_ptr, error_status, "mv l1 y"); + pi2_mvd_ptr++; } }