Cool, zoomkat, thanks for that!
Right now the sketch is still running, which means that it has been running longer than it used to.
Good to hear! Hopefully that will cure most of your problems.

But dhunt is correct. You should avoid returning pointers to local variables like that. When the function returns, that variable declaration is no longer valid. It may work like that now, but it is counting on luck.
edit: As I recall from years ago, that type of return (or passing string variables) used to push the entire string contents into the stack, rather than return a pointer. But either way, those techniques should be avoided.