Skip to content

Commit

Permalink
Fix const and bool bug
Browse files Browse the repository at this point in the history
Signed-off-by: methylDragon <methylDragon@gmail.com>
  • Loading branch information
methylDragon committed Mar 18, 2023
1 parent e706de6 commit 74d35b0
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ rosidl_runtime_c_type_description_utils_prune_referenced_type_descriptions_in_pl
ROSIDL_GENERATOR_C_PUBLIC
bool
rosidl_runtime_c_type_description_utils_field_is_valid(
rosidl_runtime_c__type_description__Field * field);
const rosidl_runtime_c__type_description__Field * field);

/// Check if individual type description is valid
/**
Expand All @@ -354,7 +354,7 @@ rosidl_runtime_c_type_description_utils_field_is_valid(
ROSIDL_GENERATOR_C_PUBLIC
bool
rosidl_runtime_c_type_description_utils_individual_type_description_is_valid(
rosidl_runtime_c__type_description__IndividualTypeDescription * description);
const rosidl_runtime_c__type_description__IndividualTypeDescription * description);

/// Check if type description is valid
/**
Expand All @@ -370,7 +370,7 @@ rosidl_runtime_c_type_description_utils_individual_type_description_is_valid(
ROSIDL_GENERATOR_C_PUBLIC
bool
rosidl_runtime_c_type_description_utils_type_description_is_valid(
rosidl_runtime_c__type_description__TypeDescription * description);
const rosidl_runtime_c__type_description__TypeDescription * description);

/// This is on a best effort basis, it won't work if the fields of the main or necessary referenced
/// types are invalid. It prunes then sorts.
Expand Down Expand Up @@ -597,12 +597,15 @@ rosidl_runtime_c_type_description_utils_append_referenced_type_description(
rosidl_runtime_c__type_description__TypeDescription * type_description_to_append,
bool coerce_to_valid);

// Copy main type description, then validate if coerce_to_valid is true
// Create a type description from a referenced description, then validate if coerce_to_valid is true
// This is done by copy!! This allocates memory and the caller is responsible for deallocating the
// output
ROSIDL_GENERATOR_C_PUBLIC
rcutils_ret_t
rosidl_runtime_c_type_description_utils_get_referenced_type_description_as_type_description(
rosidl_runtime_c__type_description__IndividualTypeDescription__Sequence * referenced_descriptions,
rosidl_runtime_c__type_description__IndividualTypeDescription * referenced_description,
const rosidl_runtime_c__type_description__IndividualTypeDescription__Sequence *
referenced_descriptions,
const rosidl_runtime_c__type_description__IndividualTypeDescription * referenced_description,
rosidl_runtime_c__type_description__TypeDescription ** output_description,
bool coerce_to_valid);

Expand Down
13 changes: 7 additions & 6 deletions rosidl_runtime_c/src/type_description_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,7 @@ rosidl_runtime_c_type_description_utils_prune_referenced_type_descriptions_in_pl

bool
rosidl_runtime_c_type_description_utils_field_is_valid(
rosidl_runtime_c__type_description__Field * field)
const rosidl_runtime_c__type_description__Field * field)
{
if (field == NULL) {
RCUTILS_LOG_WARN("Field is invalid: Pointer is null");
Expand Down Expand Up @@ -651,7 +651,7 @@ rosidl_runtime_c_type_description_utils_field_is_valid(

bool
rosidl_runtime_c_type_description_utils_individual_type_description_is_valid(
rosidl_runtime_c__type_description__IndividualTypeDescription * description)
const rosidl_runtime_c__type_description__IndividualTypeDescription * description)
{
if (description == NULL) {
RCUTILS_LOG_WARN("Individual type description is invalid: Pointer is null");
Expand Down Expand Up @@ -710,7 +710,7 @@ rosidl_runtime_c_type_description_utils_individual_type_description_is_valid(

bool
rosidl_runtime_c_type_description_utils_type_description_is_valid(
rosidl_runtime_c__type_description__TypeDescription * description)
const rosidl_runtime_c__type_description__TypeDescription * description)
{
if (description == NULL) {
RCUTILS_LOG_WARN("Type description is invalid: Pointer is null");
Expand Down Expand Up @@ -799,7 +799,7 @@ rosidl_runtime_c_type_description_utils_type_description_is_valid(
RCUTILS_LOG_ERROR("Could allocate sequence for copy of referenced type descriptions");
goto end_necessary;
}
if (rosidl_runtime_c__type_description__IndividualTypeDescription__Sequence__copy(
if (!rosidl_runtime_c__type_description__IndividualTypeDescription__Sequence__copy(
&description->referenced_type_descriptions, sorted_sequence))
{
RCUTILS_LOG_ERROR("Could not copy referenced type descriptions for validation");
Expand Down Expand Up @@ -1232,8 +1232,9 @@ rosidl_runtime_c_type_description_utils_append_referenced_type_description(

rcutils_ret_t
rosidl_runtime_c_type_description_utils_get_referenced_type_description_as_type_description(
rosidl_runtime_c__type_description__IndividualTypeDescription__Sequence * referenced_descriptions,
rosidl_runtime_c__type_description__IndividualTypeDescription * referenced_description,
const rosidl_runtime_c__type_description__IndividualTypeDescription__Sequence *
referenced_descriptions,
const rosidl_runtime_c__type_description__IndividualTypeDescription * referenced_description,
rosidl_runtime_c__type_description__TypeDescription ** output_description,
bool coerce_to_valid)
{
Expand Down
1 change: 1 addition & 0 deletions rosidl_runtime_c/test/test_type_description_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ TEST_F(TestUtilsFixture, test_appends_and_advanced_construction)
individual_desc_1, // Depends on ref: "empty"
&subset_desc_2,
true); // Coercion to valid
EXPECT_TRUE(rosidl_runtime_c_type_description_utils_type_description_is_valid(subset_desc_2));
EXPECT_EQ(subset_desc_2->referenced_type_descriptions.size, 1);
EXPECT_EQ(subset_desc_2->referenced_type_descriptions.capacity, 1);
EXPECT_FALSE(
Expand Down

0 comments on commit 74d35b0

Please sign in to comment.