hxcpp icon indicating copy to clipboard operation
hxcpp copied to clipboard

Clean up String::create handling with HX_SMART_STRINGS disabled

Open tobil4sk opened this issue 4 months ago • 0 comments

d119a07ef9e41b938fb4aebb3e6469c22c1e536f fixed an issue with incorrect handling of length < 0, however, it also introduced an unnecessary additional loop to get the length of the string, separate from the conversion/copy loop. This can be cleaned up because GCStringDup already has the correct handling of length < 0, and for TConvertToUTF8 putting length as 0 has the same effect. This way the string only has to be iterated through once for the conversion/copy.

Also, there was still broken behaviour when using String::create(_, 0). With HX_SMART_STRINGS, this always returns an empty string, whereas without HX_SMART_STRINGS the behaviour depends on the char type. This PR fixes this so it always returns an empty string.

This also adds a test for #849, to make sure it doesn't cause a regression. (Presumably, #814 is also covered by this test)

tobil4sk avatar Aug 27 '25 18:08 tobil4sk