[Date Prev][Date Next][Thread Prev][Thread Next][Thread Index]
Re: [XaraXtreme-dev] Text input broken
- From: Martin Wuerthner <lists@xxxxxxxxxxxxxxx>
- Date: Fri, 07 Apr 2006 13:24:27 +0200
- Subject: Re: [XaraXtreme-dev] Text input broken
In message <44363964.6020207@xxxxxxxx>
Luke Hart <lukeh@xxxxxxxx> wrote:
> Martin Wuerthner wrote:
>
>>Find attached a patch (patch17.txt) to fix the fix - you should not
>>pass a NULL state to mbrtowc. It is much better to pass a state
>>initialised to 0 because that is well-defined.
>>
>>
> This surprises me since the manual says "In all of the above cases, if
> ps is a NULL pointer, a static anonymous state only known to the
> mbrtowc function is used instead.", which sounded exactly like what was
> needed! If your fix actually works though, it's much better than
> following what the man-page said!
To me, it sounded as if the behaviour was more or less undefined. But
thinking more about it, I probably misunderstood what the man page
said. Do you think it means that the mbrtowc function simply keeps its
own private state which is guaranteed to be preserved between calls?
That would do the right thing (except when multiple threads tried to
use it simultaneously). In that case, your fix was correct and patch17
should be reverted. Apologies.
Of course, calling the MultiByteToUnicode function on a Unicode build
was wrong in the first place, which is the reason why your fix made
things worse (because what we passed to the function were not really
bytes of a multi-byte stream), and which is what patch18 fixed.
Martin