Thursday, September 20, 2012

When is a variable?

When it's not initialized of course!

I spent hours tracing an access violation which appeared in my code with no sane explanation.

Long story short it took a lot of output to stderr before I nailed it because there were no compiler warnings and where it was crashing was a library call.

I inadvertently discovered how to initialize a variable without initializing it. Cutting through the specifics I had the equivalent of a C char*. I had managed to forget to initialize it. "No compiler warning?" Well that's the fun part.
See this char* string existed as a temp variable to do some filename parsing on so I could autoload related resources. I was concatenating to this string. This uninitialized string. The concatenation was initializing it... but wasn't. What I think it was doing was trying to add my text on after the first nul it found in memory. Whoops!

I feel rather happy that it at least crashed the program. Otherwise that is a hell of a timebomb to have sitting around in code.

No comments:

Post a Comment