I’ve written new string functions based on std::string. They’re the typical case insensitive compare, check prefix, compare with list of names, get first argument, get last argument, and other string manipulation functions you’d normally see used with a MUD. The difference is: They’re not very prone to buffer overflows and pointer errors because they’re using std::string and it’s safer.
Not everything uses std::string natively yet – there’s still too much char * for my comfort.
Next tasks:
– Testing the string functions to see whether they work as I’d expect.
– Running the whole thing through valgrind to see whether I can catch any memory (stack-smashing) errors.
This new incarnation won’t be crashproof (software never is), but the goal is to have it never crash “randomly” like Basternae 2 did. I have a lot of good command tracing and error logging code and have written quite a bit more over the past few weeks, so if something explodes it should tell me exactly what and where.