From 0797171e03d44694beaa2ec8cce44c5cafbf77a5 Mon Sep 17 00:00:00 2001 From: Ahmet Inan Date: Wed, 8 Jul 2020 13:46:07 +0200 Subject: [PATCH] don't rely on err[] being signed --- short_bch_code_decoder.hh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/short_bch_code_decoder.hh b/short_bch_code_decoder.hh index c21b070..6e68966 100644 --- a/short_bch_code_decoder.hh +++ b/short_bch_code_decoder.hh @@ -43,8 +43,7 @@ public: for (int i = 0; i < W; ++i) par[i] = modgen(i << P); for (int i = 0; i < R; ++i) - err[i] = -1; - err[0] = 0; + err[i] = 0; for (int a = 1<<(N-1); T >= 1 && a; a >>= 1) { err[modgen(a)] = a; for (int b = a >> 1; T >= 2 && b; b >>= 1) { @@ -57,8 +56,9 @@ public: } int operator()(int inp) { - int tmp = err[(par[inp>>P] ^ inp) & (R-1)]; - return tmp >= 0 ? inp ^ tmp : -1; + int syn = (par[inp>>P] ^ inp) & (R-1); + int pat = err[syn]; + return pat || !syn ? inp ^ pat : -1; } int operator()(const int8_t *code) {