This latest release contains only two changes, but they're interesting nonetheless.
The first is a workaround for a defect in VC6. This was found in stlsoft::conversion_error, and comes about as follows. stlsoft::conversion_error is defined along the lines of:
: public std::runtime_error
. . .
public: // Construction
virtual ~conversion_error_base() = 0;
. . .
: public conversion_error_base
. . .
The highlighted line is the problem for VC++ 6. The code it generates is defective such that when an instance of any derived class is thrown, the exception does not get thrown, merely hangs about in the current scope, and the program execution carries on as if no exception was thrown.
The second change is a correction for a defect in the string access shim functions for the SYSTEMTIME type, whereby conversion of an invalid time resulted in a fault, because the calculation for the total length of the resultant string did not take account the fact that the Windows Time API functions returns 0 if the time instance is invalid. The consequence of fixing this defect has resulted in some nice refactoring, so there's some silver lining.
Coming soon: releases of VOLE, flecxx, Pantheios, and FastFormat.
Post a Comment