"Justin" == Justin Santa Barbara justinsb@hotmail.com writes:
Justin> Thanks for the quick reply Uwe. You're absolutely correct in Justin> that what I stated in my email wasn't right. I'm pretty sure ...
Justin> The problem is that MultiByteToWideChar does count the null Justin> terminator, if param 4 (the multibyte string length) is -1 Justin> indicating a null-terminated string.
I didn't consider MultiByteToWideChar.
Justin> Hence this code needs to be changed to return instead: if (len Justin> <= count) return len - 1; else return len;
Justin> Then I had a look at GetSystemDirectoryA:
Justin> UINT WINAPI GetSystemDirectoryA( LPSTR path, UINT count ) { if Justin> (path) lstrcpynA( path, DIR_System.short_name, count ); return Justin> strlen( DIR_System.short_name ); }
You're right too.
Justin> You're right that strlen doesn't count the terminating null, but Justin> the problem now is that the terminating null does need to be Justin> counted if the buffer is too small (it should return the size of Justin> the buffer required to hold the path). Sorry I didn't explain Justin> that correctly. So I think we need: len = strlen() if (len < Justin> count) return len; else return len+1;
Justin> ...
Justin> As I see it, the advantage of a helper function is that for Justin> about the same amount of work of fixing GetSystemDirectory and Justin> GetCurrentDirectory, all the functions should work the same way Justin> meaning any bugs would quickly be found. It might also be Justin> possible to optimize the case where buflen=0, while this isn't Justin> practical per-function. Should I offer a patch only for Justin> wine/files/* ?
I think that everybody feared to write a general helper function and break a lot ofr special cases. But if done right and tested well, its a good thing.
Write it first for wine/files/*, if it proved usefull, it will find more uses.
>> >>>>> "Justin" == Justin Santa Barbara justinsb@hotmail.com writes: >> Justin> There are a group of functions in the kernel that appear to be
Another hint: It is well known habit to cite first, editing away unneeded parts and then to put one own text. If the whole message gets attached unattended, it will blew up the text length.
Bye