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.