pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/28102 )
Change subject: coding: Refactor function to avoid gcc false positive warn ......................................................................
coding: Refactor function to avoid gcc false positive warn
""" /libosmocore/src/coding/gsm0503_coding.c: In function 'osmo_conv_decode_ber_punctured': /libosmocore/src/coding/gsm0503_coding.c:563:31: error: 'coded_len' may be used uninitialized [-Werror=maybe-uninitialized] 563 | *n_bits_total = coded_len; | ~~~~~~~~~~~~~~^~~~~~~~~~~ /libosmocore/src/coding/gsm0503_coding.c:541:21: note: 'coded_len' was declared here 541 | int res, i, coded_len; | ^~~~~~~~~ """
This error is really a false positive. However, it is true that the code used to be a bit more complex than required, since the 2 later conditions could be inside the first one. Let's simply do early termination to simplify the function, and get rid of the gcc warning.
Change-Id: I31ebf0c4be61daf6395d9a9fac05c7fdceb8bcb9 --- M src/coding/gsm0503_coding.c 1 file changed, 5 insertions(+), 4 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/02/28102/1
diff --git a/src/coding/gsm0503_coding.c b/src/coding/gsm0503_coding.c index 835a18e..493f957 100644 --- a/src/coding/gsm0503_coding.c +++ b/src/coding/gsm0503_coding.c @@ -543,10 +543,11 @@
res = osmo_conv_decode(code, input, output);
- if (n_bits_total || n_errors) { - coded_len = osmo_conv_encode(code, output, recoded); - OSMO_ASSERT(sizeof(recoded) / sizeof(recoded[0]) >= coded_len); - } + if (!n_bits_total && !n_errors) + return res; + + coded_len = osmo_conv_encode(code, output, recoded); + OSMO_ASSERT(sizeof(recoded) / sizeof(recoded[0]) >= coded_len);
/* Count bit errors */ if (n_errors) {