Skip to content

tc6-regs: fix narrowing conversion warnings in PLCA config (sync branch)#71

Open
tkummermehr wants to merge 18 commits intomainfrom
static-analysis/narrowing-conversions-sync
Open

tc6-regs: fix narrowing conversion warnings in PLCA config (sync branch)#71
tkummermehr wants to merge 18 commits intomainfrom
static-analysis/narrowing-conversions-sync

Conversation

@tkummermehr
Copy link
Copy Markdown
Collaborator

Summary

Fixes 9 clang-tidy bugprone-narrowing-conversions warnings in TC6Regs_Reinit (CONFIG PARAMETER 3–7 initialization).

Problem

Type cast applied only to constant literal: (int16_t)9 + initOffset1. Integer promotion rules widen the addition result back to int before assignment to int16_t target, triggering narrowing conversion warnings.

Solution

Parenthesize the entire addition: (int16_t)(9 + initOffset1). The cast now applies to the result of the addition, keeping the value in int16_t type.

Verification

All register offset values remain within int16_t range (register bit-field constraints guarantee this). Changes are mechanical and preserve behavior — no performance impact.

Closes findings from static-analysis scan.

tkummermehr and others added 18 commits August 4, 2023 10:29
TC6Regs_CheckTimers iterates all TC6_MAX_INSTANCES entries of m_reg[]
and calls DoInitialization on each. Slots that no caller has yet
bound via TC6Regs_Init still have pReg->pTC6 == NULL, so the existing
!pReg->initialized guard lets the init sequence run against a NULL
MAC-PHY handle, dereferencing NULL in TC6_Reset / TC6_WriteRegister
on every tick until a real Init arrives. Masked at the default
TC6_MAX_INSTANCES == 1, triggers as soon as a project configures more.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…sync branch) (#61)

Co-authored-by: Sven Semmler <Sven@SvenSemmler.org>
…ync branch) (#59)

Co-authored-by: Sven Semmler <Sven@SvenSemmler.org>
Move type cast to wrap entire addition expression to avoid implicit promotion
to int during addition of int8_t offset to int16_t constant. The cast was
applied only to the constant literal, allowing integer promotion rules to widen
the result back to int before assignment to int16_t, triggering narrowing
conversion warnings. Parenthesizing the addition ensures the result stays
int16_t.

Affected: CONFIG PARAMETER 3-7 initialization in TC6Regs_Reinit where register
values are calculated as int16_t constant + int8_t offset. All values remain
within int16_t range (register bit-field constraints).

Finding: clang-tidy/bugprone-narrowing-conversions at libtc6/src/tc6-regs.c:531,534,541,548,551,558,561,569,572
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant