Thanks for the explanation. A lot of my code is getting old (just like me), but I was lucky in that it was designed from the start to be cross platform. This ended up meaning that it was written in C and all the platform specific code was kept as separate modules.<p>My big problem is I have so many code paths that I can’t fully test the interactions between the different modules and functions (there are over 10^25 different possible paths). I am not sure what can be done about this given the functionality of the software is critically dependent on this flexibility. The best I have been able to come up with is testing 99.99% of the most popular paths and building in a lot of error recovery code.