Replace variable length arrays in the float specialization of
MinSumAlgorithm::finalp() with std::vector storage.
This removes reliance on compiler VLA extensions and keeps the
temporary buffers managed by standard C++ containers.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace variable length arrays in MinSumAlgorithm::finalp() with a
std::vector buffers.
Variable length arrays are a compiler extension and are not part of
standard C++. The replacement preserves the existing contiguous memory
layout while avoiding non-standard stack allocations.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Remove an inadvertent '>' character from the
QCoreApplication::applicationVersion() call in the startup version
logging for both appbench and appsrv.
This typo was identified by cppcheck during static analysis. Correcting
the expression restores valid C++ syntax, allowing the applications to
compile correctly and report their version information in the startup
log.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace signed %ld format specifiers with unsigned %lu conversions when
printing values stored as unsigned long.
The previous format strings passed unsigned values to signed printf
conversions, which could result in undefined behavior due to variadic
argument type mismatches. These issues were identified by cppcheck
invalidPrintfArgType_sint warnings.
Use format specifiers matching the actual argument types to ensure
correct and portable printf usage.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace signed %d format specifiers with unsigned %u when formatting
sample rates and channel numbers.
The previous format strings passed unsigned int values to %d conversions,
which triggered cppcheck invalidPrintfArgType_sint warnings and could
result in undefined behavior due to variadic argument type mismatches.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Change the ft8_crc message length parameter from signed int to uint32_t
since it represents a non-negative FT8 message bit count.
GCC reported a potential buffer overflow in the memcpy() call:
warning: ‘__builtin_memcpy’ specified bound between
18446744073709551560 and 18446744073709551564 exceeds maximum object size
[-Wstringop-overflow=]
The warning was caused by the signed message length allowing negative
values to be converted into a very large unsigned size when calculating
the memcpy() byte count.
Using an unsigned fixed-width type better represents the valid range of
the FT8 message length and prevents invalid negative lengths from being
interpreted as extremely large memory operations.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Fix a copy/paste error in decodeSymbols() where FT8 message type
0.3 was checked twice, preventing type 0.4 messages from being
recognized as replies.
FT8::Packing supports both 0.3 and 0.4 message types using the same
reply bit location.
Detected by cppcheck as a redundant condition.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Remove an invalid out-of-bounds array access that attempted to handle
ERROR_INSUFFICIENT_BUFFER. The statement did not resize the fixed-size
buffer and had no effect other than invoking undefined behavior.
The function only uses QueryDosDeviceA() as an existence check for COM
ports, so removing the dead error-handling code does not change its
behavior.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace variable-length arrays used for DVB-S2 pilot symbol matching with
std::vector allocations.
Use vector::data() when passing buffers to the existing pointer-based
match_ph_amp() function. This removes non-standard VLA usage and improves
C++ portability without changing behavior.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace variable-length arrays used for DVB-S2 pilot symbol matching with
std::vector allocations.
Use vector::data() when passing buffers to the existing pointer-based
match_ph_amp() function. This removes additional non-standard VLA usage and
improves C++ portability without changing behavior.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace the variable-length array used for SOF symbol buffering in the
DVB-S2 frame receiver with a std::vector allocation.
Use vector::data() when passing the buffer to the existing pointer-based
conjugate product function. This removes another non-standard VLA usage and
improves C++ portability without changing behavior.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace non-standard variable-length arrays used for PLHEADER symbol
processing with std::vector allocations. Update buffer copies and pointer
interfaces accordingly while preserving existing behavior.
This removes VLA compiler/static analysis warnings and improves C++
portability.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
cppcheck reported that the std::copy() call used iterators from different
containers when restoring ADSB demod table column sizes.
The copy operation used settings.m_columnSizes as the source start iterator
but settings.m_columnIndexes as the source end iterator. This was likely a
copy/paste error and resulted in an invalid iterator range.
Use settings.m_columnSizes for both source iterators so column size settings
are restored correctly.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
cppcheck reported that GLScopeSettings::operator=() did not assign the
m_freerun member variable.
m_freerun is part of the GLScope configuration state: it is initialized
in resetToDefaults(), and is persisted through serialize()/deserialize().
However, when a GLScopeSettings object was copied using the assignment
operator, the freerun state was not transferred from the source object.
This could result in two GLScopeSettings instances having different
freerun values after assignment, with the destination object retaining
its previous value instead of matching the source object.
Add the missing m_freerun assignment to ensure operator=() performs a
complete copy of the settings state and matches the existing
serialization behavior.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Fix cppcheck warnings about uninitialized mx variables in coarse
strength and soft symbol conversion calculations.
Replace the mxi sentinel logic with an explicit -infinity initial
maximum value, allowing the maximum search to operate directly on the
value being tracked. This removes reliance on short-circuit evaluation
for initialization and simplifies the code.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
cppcheck reported boolean expressions being used in bitwise operations
when validating UDP ports. Replace accidental '&' operators with logical
'&&' operators.
Also replace hard-coded port range limits with UINT16_MAX to make the
valid UDP port range explicit and keep UDP source/sink validation
consistent.
No functional change.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
cppcheck reported that the TestMISettings copy constructor did not
initialize member variable m_title:
Member variable 'TestMISettings::m_title' is not assigned in the copy
constructor. Should it be copied?
m_title is part of the serialized settings state, so ensure copied
TestMISettings instances preserve the configured title value.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Fix cppcheck warnings where array elements were accessed before validating
their indices. Reorder conditional expressions to ensure bounds checks are
performed before array accesses, taking advantage of C++ short-circuit
evaluation.
In EMNR::NP::interpM(), check the index limit before accessing xvals[idx].
In SNBA::scanFrame(), verify i is within the merit array bounds before
evaluating merit[i].
These changes improve defensive programming practices and prevent potential
undefined behavior if an index exceeds the valid range. No functional changes.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
The original leansdr code uses fatal() and fail() for unrecoverable errors by
terminating execution. When integrated into SDRangel, these error paths did
not provide a mechanism for the plugin to handle failures locally, allowing
initialization failures to escape the normal plugin lifecycle.
Convert leansdr fatal() and fail() handling into C++ exceptions so DATV can
detect framework initialization failures, report them, and cleanly return
control to SDRangel instead of allowing the error to terminate the application.
This behavior is desirable because a DATV framework configuration failure
should not bring down the entire application.
Catch initialization exceptions in DATVDemodSink::feed(), report the failure,
clean up the partially initialized framework, and return to the caller.
Add noreturn annotations to the leansdr error functions and include the
leansdr source in exception messages to make failures easier to diagnose.
This does not redesign leansdr error handling or provide recovery from
runtime DSP failures. It only adds an exception boundary between the
leansdr library code and the SDRangel plugin lifecycle.
noticed via cppcheck indicating many Array indexes could go out of bounds
due to fail and fatal returning.
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace the runtime-sized temporary array in the int8_t specialization of
MinSumAlgorithm::finalp() with std::vector.
The array size is determined by the runtime value of cnt, requiring a
compiler VLA extension. Using std::vector preserves the existing behavior
while removing the dependency on non-standard language extensions.
This eliminates remaining -Wvla warnings (for me) reported from
ldpctool/algorithms.h
Part of #2830
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace the runtime-sized temporary array in
MinSumCAlgorithm::finalp() with std::vector.
The temporary array size depends on the runtime value of cnt, requiring a
compiler VLA extension. Using std::vector preserves the existing behavior
while removing the dependency on non-standard language extensions.
This eliminates ~6 of remaining -Wvla warnings (for me) reported
from ldpctool/algorithms.h
Part of #2830
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace the runtime-sized temporary array in the int8_t specialization of
OffsetMinSumAlgorithm::finalp() with std::vector.
The array size is determined by the runtime value of cnt, requiring a
compiler VLA extension. Using std::vector preserves the existing behavior
while removing the dependency on non-standard language extensions.
This eliminates ~12 of remaining -Wvla warnings (for me) reported
from ldpctool/algorithms.h
Part of #2830
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace the runtime-sized temporary arrays in
OffsetMinSumAlgorithm::finalp() with std::vector.
The array sizes depend on the runtime value of cnt, requiring compiler
support for variable length arrays. Using std::vector removes this
non-standard extension while preserving the existing algorithm and memory
layout.
This eliminates ~24 of remaining -Wvla warnings (for me) reported
from ldpctool/algorithms.h.
Part of #2830
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace the runtime-sized temporary arrays used by
MinSumAlgorithm<SIMD<...>>::finalp() with std::vector.
The array sizes are determined at runtime from the number of links,
making them variable-length arrays that rely on compiler extensions.
Using std::vector removes the dependency on VLA support while
preserving the existing algorithm and behavior.
This eliminates ~24 of remaining -Wvla warnings (for me) reported
from ldpctool/algorithms.h.
Part of #2830
Signed-off-by: Robin Getz <rgetz503@gmail.com>
Replace the runtime-sized stack array in the spectrum processing path
with std::vector to avoid compiler VLA extensions.
Although the spectrum template is not instantiated as part of the
current SDRangel build, GCC still emits -Wvla warnings while parsing
the template definition. This change removes those warnings and keeps
the template valid for future use.
Use std::copy() and vector::data() when accessing the underlying
storage.
Part of #2830
Signed-off-by: Robin Getz <rgetz503@gmail.com>
The spectrum template was not being instantiated by the current build,
so stale accesses to cfft_engine::n went unnoticed.
Replace direct accesses to the private cfft_engine member with the
public size() accessor. This restores spectrum compilation and allows
the upcoming VLA cleanup to be built and tested.
Signed-off-by: Robin Getz <rgetz503@gmail.com>