Skip to content

Commit adb18fb

Browse files
committed
fix(string): short path to convert strings
1 parent bf049a7 commit adb18fb

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/StrType.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ PyObject *StrType::proxifyString(JSContext *cx, JS::HandleValue strVal) {
139139
// Short path to temporarily fix the issue with Python 3.13+ compact unicode representation.
140140
// It would error with `ValueError: embedded null character`, which is caused by the fact that
141141
// most Python C APIs assume the string buffer is null-terminated, so we need to create a copy.
142-
PyObject *copied = PyUnicode_FromObject((PyObject *)pyString); // create a copy when it's not a true Unicode object
142+
PyObject *copied = PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, chars, length);
143143
Py_DECREF(pyString);
144144
return copied;
145145
}
@@ -166,7 +166,7 @@ PyObject *StrType::proxifyString(JSContext *cx, JS::HandleValue strVal) {
166166
else { // utf16 spidermonkey, ucs2 python
167167
const char16_t *chars = JS::GetTwoByteLinearStringChars(nogc, lstr);
168168
if ((PY_VERSION_HEX) >= 0x030d0000) { // Python 3.13+, see above
169-
PyObject *copied = PyUnicode_FromObject((PyObject *)pyString); // create a copy when it's not a true Unicode object
169+
PyObject *copied = PyUnicode_FromKindAndData(PyUnicode_2BYTE_KIND, chars, length);
170170
Py_DECREF(pyString);
171171
return copied;
172172
}

0 commit comments

Comments
 (0)