You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Getting weird behavior, Time.idl is found under std_msgs/msg but then generation breaks even if direct include to std_msgs/msg is provided. Seems like relative paths inside included IDL are not processed correctly.
This is a bug that I can reproduce without any difficulty, I looked at it for a few minutes and came up with a quick hack that seems to make it work, but it'll take me a bit more time to fix it properly:
diff --git a/src/idl/src/directive.c b/src/idl/src/directive.c
index bb24af39e..ad63afea0 100644
--- a/src/idl/src/directive.c+++ b/src/idl/src/directive.c@@ -149,10 +149,13 @@ static idl_retcode_t push_line(idl_pstate_t *pstate, struct line *dir)
if ((ret = idl_normalize_path(dir->path, &norm)) < 0) {
idl_error(pstate, NULL, "Invalid line marker: path '%s' not found", dir->path);
+#if 0
return ret;
+#endif+ } else {+ idl_free(dir->path);+ dir->path = norm;
}
- idl_free(dir->path);- dir->path = norm;
assert(dir->file);
if (idl_isabsolute(dir->file)) {
The idea of the hack is basically to treat it as a warning, rather than an error. It is relaly only about managing the include directory stack and the line markers, and so continuing seems the lesser of the evils.
Getting weird behavior, Time.idl is found under
std_msgs/msg
but then generation breaks even if direct include tostd_msgs/msg
is provided. Seems like relative paths inside included IDL are not processed correctly.File structure:
AccelStamped.idl:
Header .idl:
ERROR:
Is this expected behavior?
The text was updated successfully, but these errors were encountered: