Microsoft Support

Our team ported some applications from Visual C++ 6.0 to Visual Studio 2005. We were able to get through most of the upgrade issues. However there was one tough problem that eluded us. The empty string ("") got corrupted and was showing up as "0501" everywhere in our application. In the end we turned to Microsoft support to help us out.

It was a bit tricky. Another project loaned us their extra Visual Studio 2005 licenses until we could get our customer to buy us our own. However they were reluctant to let us use up their paid Microsoft support. They get charged by the incident. Our manager expressed our extreme need. So they agreed to let us make one call to Microsoft. It was difficult to help Microsoft assist us. We are not at liberty to give out the code to our project. It is sensitive government stuff. Therefore we had to create small snippets or pass along core dumps.

In the end a developer was able to trace back the problem to the source. I think the help from Microsoft assisted him. Turns out somebody was getting a constant pointer to the internal C string held in a CString object. Then they were explicitly casting away the const and modifying the string. This is pure evil. It just so happens that the Visual C++ 6.0 compiler was masking the problem. But this was not the case in Visual Studio 2005. The developer who fixed this is worried that there are other hidden errors like this lurking in the code. I guess we shall find out sooner or later.