Hi Rob,
On 9/24/05, Robert Shearman rob@codeweavers.com wrote:
- else err = parse_buffer( file, buffer, (WCHAR *)((char *)buffer + size), error_line );
- else
- {
WCHAR *new_buff = (WCHAR *)buffer;
/* Some UNICODE files may start with the UNICODE marker */
if (*new_buff == 0xfeff)
new_buff++;
err = parse_buffer( file, new_buff, (WCHAR *)((char *)new_buff + size), error_line );
- }
Any time a Zero-Width Non-breaking Space is specifically skipped like this it is a bug. You should *never* have to do this if you use the right functions (isspaceW, etc). Is there some other bug lurking that made this change necessary?
According to Hervé the *.inf files in the windows/system32/inf folder had some junk chars in the Unicode header or something like that and it causes the need for the skipping. He was worried that isspaceW might not handle the junk properly. There is a question about the sizeof WCHAR usage so I will check with him again and send along another patch later in the week. If Alexandre does not like the check I can also ask him to test it using isspaceW.
Thanks Steven