Minor new feature added, fix to annoying issue in v0.9.2
Pre-releaseDevelopment has been a bit slow, and Git messages a bit terse, for the past two weeks or so. Sorry!
v0.9.2 had a small but idiotic issue in it, that was a stupid mistake of mine. I wasn't properly guarding a Windows-8-only API with IsWindows8OrGreater, but instead ASSERTing in debug builds. This meant that the release build would crash on calling the API, and the debug build would crash on the failed assertion. See windirstat.cpp:300 in 38470d2 for the fix. I develop on a Windows 8(.1) machine, so it didn't show up immediately. This is also a runtime check, so it didn't show up in static analysis.
I've added a (minor) feature, NTFS compression ratio, which displays the ratio of size-on-disk to size:
See 845a3f7 for the NTFS compression ratio changes.
I've also swapped out the dialog to select drives/folders with the native Windows shell dialog, which requires far less code complexity, and does a better job. The only down side is that it suffers from any of the performance issues that your local shell does (I'm looking at you, shell extensions! ahem TortoiseSvn). See 30a31f0 for the changes.
On the back end, I've implemented a new string allocation model for "children", which should reduce memory usage via a reduction in heap fragmentation. See e3ede6e for the changes
This new allocation model is also the framework for an even more efficient allocation model, that I'll introduce in the next release. This newer model will be more complex, easier to get wrong, and thus will require more dev/testing work. See eb2e4c1 for the prototyped idea.
I've implemented ScopeGuard, which was first introduced in Loki, as part of Andrei Alexandrescu's Modern C++ Design, now used at Facebook in folly, and presented in "Systematic Error Handling in C++". This will should tremendously simplify some complex code. See e557bfe for the changes.
In a number of places, particularly in drawing code, I've manually expanded/replaced MFC's code with code that does more error checking (see 3b4304b and eb2e4c1). Error checking is a good thing.
There are a few temporary hacks in ad00653 that I intend to remove immediately, but were holding this release up.
Known issues:
- Issue #2 NOT yet fixed - although I DO know what's going on, see 1837212
- The line-one-past-the-last-line isn't always properly redrawn as empty
- If you select an empty folder to scan, the treemap will be drawn as a single black square. This should probably just be an insulting error message.
I think that's everything. Hit up the links below for a binary. Let me know if anybody actually NEEDS a 32-bit build.