-
Notifications
You must be signed in to change notification settings - Fork 62
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix potential unsafe initialization in the Graph class #606
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Carlos Agüero <[email protected]>
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #606 +/- ##
=======================================
Coverage 95.97% 95.98%
=======================================
Files 147 147
Lines 10122 10130 +8
=======================================
+ Hits 9715 9723 +8
Misses 407 407 ☔ View full report in Codecov by Sentry. |
@@ -150,7 +150,7 @@ namespace graph | |||
{ | |||
std::cerr << "[Graph::AddVertex()] The limit of vertices has been " | |||
<< "reached. Ignoring vertex." << std::endl; | |||
return Vertex<V>::NullVertex; | |||
return NullVertex<V>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this seems like an API change; we may need to do it, but let me check if sdformat will be affected
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, this will require changes in sdformat:
https://github.com/gazebosim/sdformat/blob/main/src/FrameSemantics.cc#L89
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should update the migration guide to document the API break / deprecation, depending on which route we take
@@ -150,7 +150,7 @@ namespace graph | |||
{ | |||
std::cerr << "[Graph::AddVertex()] The limit of vertices has been " | |||
<< "reached. Ignoring vertex." << std::endl; | |||
return Vertex<V>::NullVertex; | |||
return NullVertex<V>(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, this will require changes in sdformat:
https://github.com/gazebosim/sdformat/blob/main/src/FrameSemantics.cc#L89
@@ -204,9 +205,6 @@ namespace graph | |||
template<typename E> | |||
class UndirectedEdge : public Edge<E> | |||
{ | |||
/// \brief An invalid undirected edge. | |||
public: static UndirectedEdge<E> NullEdge; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We may choose to make a hard API break here, but I'd prefer to not remove these static types in this pull request, but to deprecate them instead, so that we can coordinate fixes for sdformat and any other gz-*
packages in separate pull requests.
🦟 Bug fix
Partially fixes #269 (
Graph
class).Summary
I implemented the "Construct on first use" idiom (https://www.freecodecamp.org/news/cpp-static-initialization-order-fiasco/) to avoid the potential unsafe construction.
Checklist
codecheck
passed (See contributing)Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining
Signed-off-by
messages.