Null-terminated Unicode strings in java.io on Windows
roman at kennke.org
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