Skip to content

Commit 01423fd

Browse files
committed
fix 2 byte wchar_t
1 parent 04a8f9d commit 01423fd

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

Modules/arraymodule.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,8 +375,13 @@ BB_setitem(char *items, Py_ssize_t i, PyObject *v)
375375
static PyObject *
376376
u_getitem(char *items, Py_ssize_t i)
377377
{
378+
#if WCHAR_MAX == 0x7FFFFFFF
378379
return PyUnicode_FromOrdinal(
379380
(wchar_t) FT_ATOMIC_LOAD_INT_RELAXED(((wchar_t *) items)[i]));
381+
#else
382+
return PyUnicode_FromOrdinal(
383+
(wchar_t) FT_ATOMIC_LOAD_SHORT_RELAXED(((wchar_t *) items)[i]));
384+
#endif
380385
}
381386

382387
static int
@@ -411,7 +416,11 @@ u_setitem(char *items, Py_ssize_t i, PyObject *v)
411416
assert(len == 1);
412417

413418
if (i >= 0) {
419+
#if WCHAR_MAX == 0x7FFFFFFF
414420
FT_ATOMIC_STORE_INT_RELAXED(((wchar_t *) items)[i], w);
421+
#else
422+
FT_ATOMIC_STORE_SHORT_RELAXED(((wchar_t *) items)[i], w);
423+
#endif
415424
}
416425
return 0;
417426
}
@@ -3235,6 +3244,7 @@ array_new_internal_lock_held(PyTypeObject *type, PyObject *initial, int c)
32353244
if (c == 'u') {
32363245
Py_ssize_t n;
32373246
wchar_t *ustr = PyUnicode_AsWideCharString(initial, &n);
3247+
printf("... %ld, %ld\n", sizeof(wchar_t), n);
32383248
if (ustr == NULL) {
32393249
Py_DECREF(a);
32403250
return NULL;

0 commit comments

Comments
 (0)