-
Notifications
You must be signed in to change notification settings - Fork 275
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
Add more details to FileManager error report #1895
Add more details to FileManager error report #1895
Conversation
The problem with not aborting here is that while one file can fail, it will be noted down but if the next file succeeds, then it will seem like the project got compressed successfully.
And get rid of useless or confusing information.
The logic didn't account for existing files with "backup" suffix, eg. A folder may contain: MyProject.pclx MyProject.backup1.pclx If the user opened MyProject.pclx, and failed to save it later, the logic would not count existing backup files like: "MyProject.backup1.pclx" and as such the result would be no backup being made.
…non existent files This is caused by the new logic actually catching when a file has gone missing while saving. While it may not fix any bugs inheritly, it should make it easier to diagnose problems in the future.
I'm blown away by the fact that this worked at all... wtf. The only one who reported a problem here was windows but technically the file should never have been closed on any of them. Frightening..
And move some closer to the open call to make sure it happens when the scope ends.
bb18358
to
d4bdc23
Compare
srcFolderPath.append("/"); | ||
} | ||
|
||
mz_zip_archive* mz = new mz_zip_archive; | ||
ScopeGuard mzScopeGuard([&] { |
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.
OnScopeExit(delete mz);
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.
I knew about OnScopeExit when I made this change, I just prefer using ScopeGuard directly rather than a macro
Thanks for thoroughly revising all the project load/save error logs and adding the missing parts. This is very important. Apart from the explicit |
430739a
to
cf0b6d8
Compare
* Fix case where saving with no undo changes would fail * QMiniz: Simplify logic * QMiniz: Make sure to abort when failing to compress file The problem with not aborting here is that while one file can fail, it will be noted down but if the next file succeeds, then it will seem like the project got compressed successfully. * Improve the error detail log for readability And get rid of useless or confusing information. * ErrorDialog: Add copy to clipboard * Improve error details for readability - take 2 * Improve error details for readability - take 3 * Write a note when a backup has been made * FileManager: Fix logic does not account for existing backup files The logic didn't account for existing files with "backup" suffix, eg. A folder may contain: MyProject.pclx MyProject.backup1.pclx If the user opened MyProject.pclx, and failed to save it later, the logic would not count existing backup files like: "MyProject.backup1.pclx" and as such the result would be no backup being made. * Improve layer saving diagnostics * Fix where where project couldn't be saved because miniz tried to zip non existent files This is caused by the new logic actually catching when a file has gone missing while saving. While it may not fix any bugs inheritly, it should make it easier to diagnose problems in the future. * Improve diagnostics around qminiz and archiving * Add text explaining the importance of the bug report * Add missing space * QMiniz: make sure to always close reader * Layer: Add error diagnostics when failing to save one or more layers * FileManager:writeMainXML: Slightly safer way to close file * QMiniz: Make errors more explicit and fail quickly. * Add error keyword to writePalette * FileManager: close file after recovery. * Remove indentation * FileManager: Check for Unzipping errors * QMiniz: Fix typo... I'm blown away by the fact that this worked at all... wtf. The only one who reported a problem here was windows but technically the file should never have been closed on any of them. Frightening.. * Add missing QFile::close where a file has been opened. And move some closer to the open call to make sure it happens when the scope ends. * ErrorDialog: shorten description * QMiniz: Only close if we succeded to open it . * Remove explicit file.close because QFile already handles this * Fix relative include path # Conflicts: # core_lib/src/managers/undoredomanager.cpp # core_lib/src/structure/filemanager.cpp
The purpose of this PR has been to make the error report cover more steps, introduce "Error" to make it more explicit what's a information, a warning and an error.
I've also tried to make it fail faster rather than spitting out all kinds of irrelevant information when the actual error happened 4 lines above.
Here's an example of what our current report looks like:
And here's the new one:
In addition the error dialog now also has a "Copy to clipboard" button, so the user can more easily paste the error report.