Skip to content

Commit 42012e8

Browse files
committed
Return an error code if there's a malformed parameters file
This restores behavior that was lost when the '__params:=' syntax was deprecated in #495. Signed-off-by: Jacob Perron <[email protected]>
1 parent 686d426 commit 42012e8

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

rcl/src/rcl/arguments.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -610,11 +610,10 @@ rcl_parse_arguments(
610610

611611
// Attempt to parse argument as parameter file rule
612612
args_impl->parameter_files[args_impl->num_param_files_args] = NULL;
613-
if (
614-
RCL_RET_OK == _rcl_parse_param_file_rule(
615-
argv[i], allocator, args_impl->parameter_overrides,
616-
&args_impl->parameter_files[args_impl->num_param_files_args]))
617-
{
613+
ret = _rcl_parse_param_file_rule(
614+
argv[i], allocator, args_impl->parameter_overrides,
615+
&args_impl->parameter_files[args_impl->num_param_files_args]);
616+
if (RCL_RET_OK == ret) {
618617
++(args_impl->num_param_files_args);
619618
RCUTILS_LOG_WARN_NAMED(ROS_PACKAGE_NAME,
620619
"Found parameter file rule '%s'. This syntax is deprecated. Use '%s %s %s' instead.",
@@ -625,6 +624,10 @@ rcl_parse_arguments(
625624
args_impl->parameter_files[args_impl->num_param_files_args - 1],
626625
args_impl->num_param_files_args);
627626
continue;
627+
} else if (RCL_RET_ERROR == ret) {
628+
// If we return RCL_RET_ERROR then the argument contained the prefix '__params:=',
629+
// but the parameter file may be malformed or does not exist.
630+
goto fail;
628631
}
629632
RCUTILS_LOG_DEBUG_NAMED(ROS_PACKAGE_NAME,
630633
"Couldn't parse arg %d (%s) as a deprecated parameter file rule. Error: %s",
@@ -751,7 +754,7 @@ rcl_parse_arguments(
751754
}
752755

753756
// Drop parameter overrides if none was found.
754-
if (0U == args_impl->parameter_overrides->num_nodes) {
757+
if (NULL != args_impl->parameter_overrides && 0U == args_impl->parameter_overrides->num_nodes) {
755758
rcl_yaml_node_struct_fini(args_impl->parameter_overrides);
756759
args_impl->parameter_overrides = NULL;
757760
}

0 commit comments

Comments
 (0)