Fix error when reloading file more than once#1
Merged
rabfulton merged 1 commit intorabfulton:masterfrom Apr 10, 2026
Merged
Conversation
markyd_app_open_file() invalidates the current path string, so calling it with the pointer from markyd_app_get_current_path() works the first time but causes a use-after-free on subsequent reloads. Copy the path with g_strdup() before passing it to open_file, and free it afterwards.
Contributor
Author
|
Hey @rabfulton ! Can you please review this PR? |
Owner
|
Thank you for spotting and fixing this, was out of town for a few days and have only just got a chance to take a look. |
Contributor
Author
|
No problem! Love the app! |
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.
Repro Steps:
Expected Results:
Actual Results:
Issue Summary
on_refresh_clicked()passes the pointer frommarkyd_app_get_current_path()directly tomarkyd_app_open_file(), which invalidates that pointer internally. The first reload works, but subsequent reloads cause a use-after-free, which leads to the aforementioned error.This fix copies the path with
g_strdup()before passing it toopen_file, and frees it afterwards.