New release: v2.3.2, v2.2.8 and v2.1.10
v2.3.2, v2.2.8 and v2.1.10 have just been released. These are minor releases containing only bugfixes.
Bug fixes
The following bugs have been fixed in all three versions:
- GCC 12 is now supported. All build warnings have been fixed.
- Several clang warnings have been fixed. And the
-Wno-static-in-inline
flag has been added to$CFLAGS
to suppress warnings about the use ofextern inline
. - The
r[ead] p[do]
andw[rite] p[do]
commands incoctl
(and the ASCII gateway) mimick RPDO/TPDO access to the local object dictionary. These commands now correctly ignore theAccessType
to prevent errors. coctl
no longer changes tries to change the bitrate if it was already correct, or if retrieving the bitrate fails. This prevents the network interface from being left in a down state after initialization.- A potential use-after-free in the user-defined destructor of a promise has been fixed.
- Potential race conditions in
ev_future_submit()
andev_future_when_all_n()
have been fixed. - The Server-SDO now copies the CRC support flag from the Client-SDO request to its own response. Even though the server supports CRC in SDO block transfers, reporting this when the client does not may result in an error in some clients. To prevent confusion, if the client does not support CRC, we pretend to not support it either.
- The CAN frame receiver now uses strict CAN ID matching and does not mask unused bits before comparison. This prevents situations where a CAN frame is sent to a receiver even though the ID differs from what the receiver expects, which may result in assertion failures.
The following additional issues have been addressed in v2.3.2 and v2.2.8:
dcfgen
now explicitly generates an SDO request to disable the heartbeat consumer, if necessary.- The EDS/DCF Python tools now accept a
LastEDS
key in theFileInfo
section of EDS/DCF files. - The CAN network interface in liblely-io2 now correctly reports the read/write error count to the user-defined callback function. Previously, the last error code was supplied to the callback instead of the error count.
The following additional issues have been addressed in v2.3.2:
--disable-diag
(LELY_NO_DIAG
) no longer results in build errors.- SDO/PDO communication parameters and PDO mapping parameter records are now
copied explicity instead of with
memcpy()
. This fixes potential errors when sub-objects are missing from the local object dictionary. - Receiving an empty string via SDO no longer results in an
std::string
instance being initialized with a null pointer, which is undefined behavior.
Known issues
The following known issues are still present:
- When compiling with clang with C17 support, the following error is reported
for multiple files:
error: macro 'ATOMIC_VAR_INIT' has been marked as deprecated [-Werror,-Wdeprecated-pragma]
This cannot be easily fixed, since the
ATOMIC_VAR_INIT
macro is also used in the<lely/libc/stdatomic.h>
compatibility layer for compilers without support for C11 atomics. For now, the error can be fixed by adding-std=c11
to$CFLAGS
when compiling with clang.
Download
You can download the source from GitLab or the Ubuntu packages from our PPA.