Bidi B2 - GetCharacterPlacement order array

Shachar Shemesh wine-devel at
Mon Jun 2 11:30:00 CDT 2003

David Laight wrote:

>Be aware that strncyp() rarely DTRT, in particular:
>- it doesn't guarantee to zero terminate the target
>- it is required to zero fill the target buffer
>Neither of these is usually desirable.
Well aware of both. Thanks. I'm routinely giving lectures about them 

Since the buffer is not zero terminated to begin with, 1 is not a 
problem. Since the loop that strncpy replaces copied n bytes over from 
the old buffer to the new one, neither is 2. This does impose the 
theoretical problem that if the original string WAS zero terminated, and 
the NULL was not the last WCHAR in the buffer, we change the semantics. 
I doubt very much, however, that you will find a program that relies on 
this. I don't even know what Windows does under the same circumstances.

>Many systems have a strlcpy() function which does what you want much
>more often.
Well aware of that too. strncpy is really the most fitting here. Trust me.

>OTOH is the target buffer can be too short with valid data, they you
>need to (typically) dynamically allocate a buffer.
Not applicable to GetCharacterPlacement.

>	David


Shachar Shemesh
Open Source integration consultant
Home page & resume -

More information about the wine-devel mailing list