- 
                Notifications
    You must be signed in to change notification settings 
- Fork 501
[API] Fix -Werror=alloc-size-larger-than= warning in runtime_context.h #3709
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
[API] Fix -Werror=alloc-size-larger-than= warning in runtime_context.h #3709
Conversation
| Codecov Report❌ Patch coverage is  
 Additional details and impacted files@@            Coverage Diff             @@
##             main    #3709      +/-   ##
==========================================
- Coverage   89.95%   89.90%   -0.05%     
==========================================
  Files         225      225              
  Lines        7273     7281       +8     
==========================================
+ Hits         6542     6545       +3     
- Misses        731      736       +5     
 🚀 New features to boost your workflow:
 | 
| } | ||
| if (size_ > max_capacity_) | ||
| { | ||
| return Context(); | 
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.
Just curious - should it return the last valid context, instead of empty one ?
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.
Good question.
In my understanding, Scope will attach and detach contexts on creation and destruction, adding/removing from the stack.
If the code returns the last valid context, then we will have:
- every scope nested at depth max_capacity_, max_capacity_ + 1, ..., max_capacity_ + N share the same context.
- Scope at max_capacity_ + N will destroy the last valid scope on destruction, causing side effects.
So, I think Top() and Pop() should return an empty context instead, once the stack depth goes beyond the limit.
This is very theoretical, because any process with 1 million nested scopes in the call stack will never reach this point, being long dead, already killed for other reasons (stack overflow, out of memory).
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.
LGTM. The edge case shouldn’t occur in any normal usage scenario :)
| } | ||
| if (size_ > capacity_) | ||
| { | ||
| Resize(size_ * 2); | 
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.
@marcalff
Did you see this line?
Resize(size_ * 2);
Contributes to #2544
Changes
Please provide a brief description of the changes here.
For significant contributions please make sure you have completed the following items:
CHANGELOG.mdupdated for non-trivial changes