Skip to content

fix(txtdata): avoid UB in _ftoa bit shifts#1817

Open
robekl wants to merge 1 commit intomeshcore-dev:devfrom
robekl:fix/txtdatahelpers-ftoa-shift-ub-clean
Open

fix(txtdata): avoid UB in _ftoa bit shifts#1817
robekl wants to merge 1 commit intomeshcore-dev:devfrom
robekl:fix/txtdatahelpers-ftoa-shift-ub-clean

Conversation

@robekl
Copy link

@robekl robekl commented Feb 24, 2026

Summary

Removes undefined behavior in float-to-text conversion bit operations in TxtDataHelpers.cpp.

Bug

_ftoa used signed shift operations that can invoke undefined behavior for certain values/bit patterns.

Trigger

Call float formatting on inputs that drive the problematic signed shift path in conversion internals.

Impact

  • Compiler/optimization-dependent output
  • Incorrect numeric formatting in text payloads
  • Potential runtime instability on some toolchains/targets

Fix

Switched problematic shift intermediates to unsigned types so bit operations are well-defined across compilers and platforms.

Use unsigned intermediate shifts when deriving integer and fractional parts to avoid signed left-shift undefined behavior under UBSAN.

Keeps formatting behavior intact while making sanitizer runs pass.
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