Fix memory leaks in avm_open() - #3
Open
gzagaris wants to merge 1 commit into
Open
Conversation
AddressSanitizer running on Mint's AVMesh unit tests exposed memory leaks in avm_open() when attempting to open invalid AVMesh files. This change delays avmesh_file allocation until after the file is successfully opened and its prefix metadata is read, ensuring early error paths clean up consistently both before and after registration.
gzagaris
requested review from
bpittman,
Copilot,
rpmcnally,
rtrigg and
selamberson
June 18, 2026 22:41
There was a problem hiding this comment.
Pull request overview
This PR adjusts avm_open() error-handling and allocation order to prevent resource leaks when opening invalid/non-AVMesh files, as detected by AddressSanitizer in unit tests.
Changes:
- Delay
avmesh_fileallocation/registration until afterfopen()succeeds and thefile_id_prefixmetadata is successfully read. - Standardize early-exit cleanup by explicitly
fclose()ing onfile_id_prefixread failure. - Replace manual
deletecleanup on rev open failures withavm_close().
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+52
to
+58
| // allocate an avmesh_file instance | ||
| avmesh_file *avf = new avmesh_file; | ||
| avf->rev0 = NULL; | ||
| avf->rev1 = NULL; | ||
| avf->rev2 = NULL; | ||
| avf->formatRevision = -1; | ||
| file_list[file_counter] = avf; |
Comment on lines
68
to
71
| if (rev0::avm_open(avf->rev0, id)) { | ||
| delete avf->rev0; | ||
| delete avf; | ||
| avm_close(file_counter); | ||
| return 1; | ||
| } |
| if (rev1::avm_open(avf->rev1, id)) { | ||
| delete avf->rev1; | ||
| delete avf; | ||
| if (rev1::avm_open(avf->rev1, id)) { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
AddressSanitizer running on Mint's AVMesh unit tests exposed memory leaks in avm_open() when attempting to open invalid AVMesh files. This change delays avmesh_file allocation until after the file is successfully opened and its prefix metadata is read, ensuring early error paths clean up consistently both before and after registration.