It's time for a new SVN update.
The update includes important bug fixes and internal changes that increase performance and code quality. PC-Lint (http://www.gimpel.com/) was also used to solve several issues.
Here's the detailed contents:
- New: _CPPUNWIND - Added explicit _CPPUNWIND to force CPP exception handling in Visual Studio 2005 & 2003 because in some cases the /EHsc compiler options gets ignored.
- New: Asserts - Added many assert verifications to the solution.
- New: PC-Lint configuration files - Added PC-Lint configuration files to CELayoutEditor at Docs\Lint. See PC-Lint entry below for more details.
- New: Log macros - Added LOG_EXCEPTION_SAFE macro, useful for catching exceptions inside a destructor (which should never throw exceptions).
- Change: PC-Lint - Run PC-Lint (8.00w) on the project. Many style changes including (but not limited to):
- * Removed unused variables.
* Removed unused includes.
* Prevented exceptions in destructors.
* Nomenclature fixes (still a long way to go).
* Initialized variables (notably during construction).
* Added code validations (e.g. null pointer checks).
* Renamed local variables that were hiding other global (or possibly even local) elements of lower scope.
* Explicitly marked unused function return value as (void)func().
* Added C++ casts where needed (static and const casts).
* Removed unreachable code warnings.
* Added missing destructors.
* Avoided, whenever possible, calling virtual members during construction and destruction (since the base versions of these functions and never the derived would be called).
* Used scoping operator to access static class members whenever possible (instead of using the instances directly).
* Prevented unqualified virtual function calls.
* Preferred constructor initialization list instead of assignment inside constructor for variable setup.
* Reduced prototype coercion.
- Change: Replaced static_cast by wx_static_cast, which is safer and reverts back to C-style casting if static_cast is not supported.
- Bugfix: Memory leaks - Cleaned a couple of memory leaks by freeing allocated custodial pointers.
- Bugfix: Empty view check - Fixed a situation in EditorCanvas::OnKeyDown() that would cause a fatal error when trying to perform operations on an empty view.
- BugFix: Text colour crash - Fixed a crash in EditorDocument::HandleColoursUpdate when the user tried to modify the text color (via shift drag) of a window that didn't support the TextColours property.
- Bugfix: Default color - Fixed a bug in EditorDocument::HandleColoursUpdate() where the default color was always being chosen as the upper left corner of the rectangle (i.e. missing break statements in the switch/case).
- Bugfix: Mouse movement modification - Fixed a bug in EditorDocument::HandleMouseMoved where the function was always flagging a modification even when one wasn't being performed.