ntdll: rtlstr.c: Implement checking for control characters in RtlIsTextUnicode [try 4]

Zac Brown zac at zacbrown.org
Thu Jun 19 22:59:36 CDT 2008


Zac Brown wrote:
> Michael Karcher wrote:
>> Am Donnerstag, den 19.06.2008, 12:52 -0700 schrieb Zac Brown:
>>> - Because these tests are mutually exclusive, a single goto label suffices for 
>>> breaking the loop.
>> As written, your tests are not mutually exclusive. It could happen that
>> flags has IS_TEXT_UNICODE_CONTROLS and IS_TEXT_UNICODE_REVERSE_CONTROLS,
>> set and out_flags contains IS_TEXT_UNICODE_REVERSE_SIGNATURE. (If the
>> caller doesn't provide flags, both flags are set, in fact!) In that
>> case, both conditions of your if statements are true.
>>
>> I don't know whether that means that you need two goto targets or that
>> your logic should be changed, but I suspect the latter. If you test for
>> reversed control characters only I a reversed BOM was found, you should
>> not test for non-reversed control characters if a reversed BOM was
>> found, according to my intuition.
>>
>> Regards,
>>   Michael Karcher
>>
>>
>>
> Hmmm this is true. Added a test in the first if statement to do something like:
> 
> if((flags & IS_TEXT_UNICODE_CONTROL) && (out_flags & IS_TEXT_UNICODE_SIGNATRUE)) 
> causes a wine test to fail.
> 
> So either I need a goto at the end of the first if statement before the closing 
> brace, or I need to adjust some other things in the code.
> 
> Any thoughts from anyone on the proper way to approach this ;). I'd like to get 
> this one done before try 10 (haha).
> 
> -Zac
> 
> 

Actually I guess just make it an if..else..if would work too.



More information about the wine-devel mailing list