@@ -369,21 +369,17 @@ PyObject * PyUnicode_FromWideChar(const wchar_t *u, Py_ssize_t size) {
369
369
}
370
370
371
371
static PyObject * _PyUnicode_FromUCS1 (const Py_UCS1 * u , Py_ssize_t size ) {
372
- Py_UCS1 * buffer = (Py_UCS1 * ) malloc (size * PyUnicode_1BYTE_KIND );
373
- memcpy (buffer , u , size * PyUnicode_1BYTE_KIND );
374
- return GraalPyTruffleUnicode_New (polyglot_from_Py_UCS1_array (buffer , size ), PyUnicode_1BYTE_KIND , 0 );
372
+ return GraalPyTruffleUnicode_FromUCS (polyglot_from_i8_array ((int8_t * )u , size ), size , PyUnicode_1BYTE_KIND );
375
373
}
376
374
377
375
static PyObject * _PyUnicode_FromUCS2 (const Py_UCS2 * u , Py_ssize_t size ) {
378
- Py_UCS2 * buffer = (Py_UCS2 * ) malloc (size * PyUnicode_2BYTE_KIND );
379
- memcpy (buffer , u , size * PyUnicode_2BYTE_KIND );
380
- return GraalPyTruffleUnicode_New (polyglot_from_Py_UCS2_array (buffer , size ), PyUnicode_2BYTE_KIND , 0 );
376
+ const Py_ssize_t byte_size = size * PyUnicode_2BYTE_KIND ;
377
+ return GraalPyTruffleUnicode_FromUCS (polyglot_from_i8_array ((int8_t * )u , byte_size ), byte_size , PyUnicode_2BYTE_KIND );
381
378
}
382
379
383
380
static PyObject * _PyUnicode_FromUCS4 (const Py_UCS4 * u , Py_ssize_t size ) {
384
- Py_UCS4 * buffer = (Py_UCS4 * ) malloc (size * PyUnicode_4BYTE_KIND );
385
- memcpy (buffer , u , size * PyUnicode_4BYTE_KIND );
386
- return GraalPyTruffleUnicode_New (polyglot_from_Py_UCS4_array (buffer , size ), PyUnicode_4BYTE_KIND , 0 );
381
+ const Py_ssize_t byte_size = size * PyUnicode_4BYTE_KIND ;
382
+ return GraalPyTruffleUnicode_FromUCS (polyglot_from_i8_array ((int8_t * )u , byte_size ), byte_size , PyUnicode_4BYTE_KIND );
387
383
}
388
384
389
385
// taken from CPython "Python/Objects/unicodeobject.c"
0 commit comments