So recently 2 of my bug-reports to the Microsoft Visual Studio “14” CTP got acknowledged as bugs. I thought I’d recap them here.
The first one is a pretty straight-forward library regression. The local aware character classification functions from <ctype.h>
like _isalnum_l
now have one argument of the apparently internal type __crt_locale_pointers
(_locale_t is typedef’ed to it). This appears to be a remnant/copy&paste-error of using this code in the CRT. This wouldn’t be an issue if the <ctype.h>
header would declare that type but it doesn’t. No biggie, this was a straightforward regression from MSVC 2013.
The other bug was a little more C++ language related and a little more confusing too. The minimal code example that crashes is this:
#include <string> struct Msg { std::string mText; }; void log(Msg msg){} int main() { log({ "t stuff" }); return 0; }
What happens here is that the compiler correctly constructs the Msg
object and elides a copy but then calls the destructor twice (once on an invalid location). This of course won’t cause crashes for trivially destructible types but resource owning types like std::string
cause this program to crash.
This error happened in both MSVC 2013 and MSVC “14” CTP.
This should be enough to chronicle some more of the bugs I personally encountered, not really much a point beside that to this post.