But still (the often cited sentence): It used to work in Windows. So now I don't know if Wine should be clean (and NULL pointer in tab name is not allowed) or if it should behave as Windows (no matter what docs say) and a NULL pointer is just an empty name...
What we did for previous problems of that kind is to allow it to be NULL (thus add some checks) if we know of an app that uses it.
The first implementation should always follow what MSDN says (except if it's a partial implementation, of course). If it is found that Windows acts differently than MSDN says, and that an app in the wild is actually expecting that behaviour, then we add some NULL checks to refrain Wine from crashing (more precisely, to act as Windows does).
Besides your own app, do you know of another app which uses that pattern?
Hard to tell. If a program doesn't work it can be this error as well as any other. You only know for sure if you can look into source code which is hard in commercial apps. Even if no known app expects this behaviour it could arise any time. So if it's not too much work (checking a pointer shouldn't be) I'd suggest to allow NULL pointers. I can't think of a reason for a program that it's useful to crash otherwise.
bye Fabi