Skip to content
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

GUI editor crashes engine when attempting to save outside of the program directory. #2381

Open
chaigler opened this issue Nov 10, 2019 · 0 comments

Comments

@chaigler
Copy link
Contributor

This is on Windows, although something similar may happen on Mac and Linux. May also affect the mission editor (I haven't tried that yet).

If you attempt to save a GUI to a location outside of the main program directory the engine will crash and point to Stream::_write() with a 'Read Access Violation: this was nullptr' error. This occurs because the FileObject used in GuiEditCanvas::save() fails to open the location for writing (unless you're running the program as an admin/have elevated permissions) and the save() method doesn't check its return value to make sure it can actually write the data.

I've patched this in my repo by simply checking the return val & exiting the save() method early if it's false (around line 439 in guiEditorCanvas.ed.cs):

if(!%fo.openForWrite(%filename))
{
    error("GuiEditCanvas::save() - Unable to save, file location not open for writing.");
    %fo.close();
         
    return false;
}
      
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant