[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;
  }