summaryrefslogtreecommitdiff
path: root/numpy/core/src
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/core/src')
-rw-r--r--numpy/core/src/scalartypes.inc.src6
-rw-r--r--numpy/core/src/ucsnarrow.c7
2 files changed, 9 insertions, 4 deletions
diff --git a/numpy/core/src/scalartypes.inc.src b/numpy/core/src/scalartypes.inc.src
index 1ef8372f2..bdf5402db 100644
--- a/numpy/core/src/scalartypes.inc.src
+++ b/numpy/core/src/scalartypes.inc.src
@@ -2390,8 +2390,12 @@ PyArray_DescrFromScalar(PyObject *sc)
type_num = descr->type_num;
if (type_num == PyArray_STRING)
descr->elsize = PyString_GET_SIZE(sc);
- else if (type_num == PyArray_UNICODE)
+ else if (type_num == PyArray_UNICODE) {
descr->elsize = PyUnicode_GET_DATA_SIZE(sc);
+#ifndef Py_UNICODE_WIDE
+ descr->elsize <<= 1;
+#endif
+ }
else {
descr->elsize = \
((PyVoidScalarObject *)sc)->ob_size;
diff --git a/numpy/core/src/ucsnarrow.c b/numpy/core/src/ucsnarrow.c
index a105ebe27..9eb668b77 100644
--- a/numpy/core/src/ucsnarrow.c
+++ b/numpy/core/src/ucsnarrow.c
@@ -15,12 +15,12 @@ static int
PyUCS2Buffer_FromUCS4(Py_UNICODE *ucs2, PyArray_UCS4 *ucs4, int ucs4length)
{
register int i;
- int surrpairs = 0;
+ int numucs2 = 0;
PyArray_UCS4 chr;
for (i=0; i<ucs4length; i++) {
chr = *ucs4++;
if (chr > 0xffff) {
- surrpairs++;
+ numucs2++;
chr -= 0x10000L;
*ucs2++ = 0xD800 + (Py_UNICODE) (chr >> 10);
*ucs2++ = 0xDC00 + (Py_UNICODE) (chr & 0x03FF);
@@ -28,8 +28,9 @@ PyUCS2Buffer_FromUCS4(Py_UNICODE *ucs2, PyArray_UCS4 *ucs4, int ucs4length)
else {
*ucs2++ = (Py_UNICODE) chr;
}
+ numucs2++;
}
- return ucs4length + surrpairs;
+ return numucs2;
}