Null-terminated Unicode strings in on Windows

Roman Kennke roman at
Fri Jan 25 17:44:54 UTC 2008


> > The specification is buggy
> > > in that it does not take into account the operating system interface 
> > > and makes correct memory management inefficient 
> > > for the benefit of sparing one byte per buffer 
> > > where an OS call is not needed.
> > > Ridiculous.
> > 
> > Tom Tromey pointed out another possible problem on IRC: What if the
> > string itself contains the 0? Unlikely, but possible in the Java world.
> I understand that parameters passed to the OS 
> are subject to the limitations of the OS.
> Not containing a zero inside may be just one of them.  
> The Java specification claims nowhere 
> that every string can be used to name every object.

Yeah, but GetStringChars() is a general purpuse JNI function and not at
all tied to the OS. Passing the string on to the OS for I/O purposes is
just one use case. Zero-terminating a Java string really doesn't right.
If you need it zero-terminated, then you can always do this in your code
by copying over the string in a static buffer or similar (as suggested
somewhere else in this thread). This is by no means incorrect memory
management, it only requires a little more thinking.



More information about the core-libs-dev mailing list