Fix filesystem iteration on Windows #469
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
While looking through the logs of https://ci.ros2.org/view/nightly/job/nightly_win_deb/3114/ , I noticed that there was an "access violation". This didn't actually cause any tests to fail, but it is a bit weird so I decided to investigate.
What I found was that we were unnecessarily calling
FindClose
on Windows duringrcutils_dir_iter_next
when we failed to find another entry. Because we always callrcutils_dir_iter_close
after use of the iterator, which also callsFindClose
, we were running into UB on Windows. Fix that here by just removing theFindClose
duringrcutils_dir_iter_next
.While I was in here, I noticed that we were unnecessarily doing a bunch of casts from void pointers to the state pointers. But we can just use forward declaration for that, and remove the casts.