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
This commit is contained in:
Pau Espin 2022-05-13 13:07:21 +02:00
parent 8f25fd27ed
commit d2737e6027
1 changed files with 5 additions and 4 deletions

View File

@ -543,10 +543,11 @@ static int osmo_conv_decode_ber_punctured(const struct osmo_conv_code *code,
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) {