6.2.10. APIs (Modern C++ API)
6.2.10.1. [Critical] Unexpected rti.connextdds.PreconditionNotMetError when setting optional string members in QoS policies
Attempting to assign a non-set value to an optional string member in a
QoS policy in modern C++ resulted in the generation of an
rti.connextdds.PreconditionNotMetError
.
The QoS policy members affected by this issue were:
EntityName::name
EntityName::role_name
Monitoring::application_name
MonitoringPeriodicDistributionSettings::datawriter_qos_profile_name
MonitoringEventDistributionSettings::datawriter_qos_profile_name
MonitoringLoggingDistributionSettings::datawriter_qos_profile_name
MonitoringDedicatedParticipantSettings::participant_qos_profile_name
MonitoringDistributionSettings::publisher_qos_profile_name
This problem has been resolved.
[RTI Issue ID CORE-13801]
6.2.10.2. [Critical] Move constructors for some of the built-in topic-types were incorrectly implemented
This issue was fixed in release 6.1.0, but not documented at that time.
The implementation of the move constructor and move assignment for the built-in topic types, such as PublicationBuiltinTopicType, may have caused undefined behavior. This problem has been resolved.
[RTI Issue ID CORE-13791]
6.2.10.3. [Critical] Manually closing some built-in readers could lead to a crash
Calling close()
on the built-in DataReaders with topic names
service_request_topic_name
or virtual_subscription_topic_name
could have led to a crash. (Note that if they were not manually closed,
which is not necessary, the issue did not happen.) This issue has been
fixed.
[RTI Issue ID CORE-13757]
6.2.10.4. [Critical] Incorrect implementation of DynamicDataMemberInfo constructor and assignment may have led to undefined behavior
It was not safe to copy a DynamicDataMemberInfo
object. Using its
copy constructor or copy-assignment operator may have led to undefined
behavior if the DynamicData
object that created it had been
destroyed before. This problem has been resolved by making
DynamicDataMemberInfo
a true value type. It now owns the memory
instead of relying on the related DynamicData object to be alive.
[RTI Issue ID CORE-13753]
6.2.10.5. [Major] int8_t, uint64_t, int64_t not supported as primitive types in Dynamic Type API
The types int8_t, uint64_t, int64_t were not accepted as a valid type
for the templates of dds::core::xtypes::PrimitiveType
. Therefore,
the following code did not compile with C++11:
my_struct_type.add_member((dds::core::xtypes::Member(dds::core::xtypes::PrimitiveType<int8_t>()));
my_struct_type.add_member((dds::core::xtypes::Member(dds::core::xtypes::PrimitiveType<int64_t>()));
my_struct_type.add_member((dds::core::xtypes::Member(dds::core::xtypes::PrimitiveType<uin64_t>()));
The issue with int64_t and uint64_t was fixed in release 7.0.0. The error with int8_t is fixed in this release, 7.2.0. Now, the above code will compile and work.
[RTI Issue ID CORE-13689]
6.2.10.6. [Major] Policy getter for rti::core::policy::Monitoring previously missing *
The policy getter for the rti::core::policy::Monitoring
QoS was previously
missing in Modern C++. The missing getter has now been added.
[RTI Issue ID MONITOR-552]
* This bug does not affect you if you are upgrading from 6.1.x or earlier.