[Python-checkins] CVS: python/dist/src/Python bltinmodule.c,2.152,2.153
Jeremy Hylton
python-dev@python.org
Wed, 12 Apr 2000 17:19:50 -0400
Update of /projects/cvsroot/python/dist/src/Python
In directory goon.cnri.reston.va.us:/home/jhylton/python/src/Python
Modified Files:
bltinmodule.c
Log Message:
ord: provide better error messages
Index: bltinmodule.c
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Python/bltinmodule.c,v
retrieving revision 2.152
retrieving revision 2.153
diff -C2 -r2.152 -r2.153
*** bltinmodule.c 2000/04/11 15:38:23 2.152
--- bltinmodule.c 2000/04/12 21:19:47 2.153
***************
*** 1643,1661 ****
PyObject *obj;
long ord;
if (!PyArg_ParseTuple(args, "O:ord", &obj))
return NULL;
! if (PyString_Check(obj) && PyString_GET_SIZE(obj) == 1)
! ord = (long)((unsigned char)*PyString_AS_STRING(obj));
! else if (PyUnicode_Check(obj) && PyUnicode_GET_SIZE(obj) == 1)
! ord = (long)*PyUnicode_AS_UNICODE(obj);
! else {
! PyErr_SetString(PyExc_TypeError,
! "expected a string or unicode character");
return NULL;
}
! return PyInt_FromLong(ord);
}
--- 1643,1672 ----
PyObject *obj;
long ord;
+ int size;
if (!PyArg_ParseTuple(args, "O:ord", &obj))
return NULL;
! if (PyString_Check(obj)) {
! size = PyString_GET_SIZE(obj);
! if (size == 1)
! ord = (long)((unsigned char)*PyString_AS_STRING(obj));
! } else if (PyUnicode_Check(obj)) {
! size = PyUnicode_GET_SIZE(obj);
! if (size == 1)
! ord = (long)*PyUnicode_AS_UNICODE(obj);
! } else {
! PyErr_Format(PyExc_TypeError,
! "expected string or unicode character, " \
! "%.200s found", obj->ob_type->tp_name);
return NULL;
}
+ if (size == 1)
+ return PyInt_FromLong(ord);
! PyErr_Format(PyExc_TypeError,
! "expected a character, length-%d string found",
! size);
! return NULL;
}