Fix freeing non-allocated memory when copy shape_type #444
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.
This PR fixed the bug described in Issue #437.
Bug Description
Memory crash happened when constructing a
SimpleArray
fromnp.ndarray
. This was due to freeing the memory of non-allocated memory in the copy assignment operator ofshape_type
aka.small_vector<size_t>
.This bug only happens when the size of the shape of the source
np.ndarray
is larger then 3Bug Backtrace
Solution
The delete statement where the error happens are intended to remove the allocated buffer when the source vector has larger capacity than the target vector. However when deleting the array, it wasn't check whether the buffer was allocated or not. Therefore, this PR adds this check. Also I went through all the constructors and assignment operators of
small_vector
and confirmed that this issue doesn't happen in other place.