diff Python/structmember.c @ 42083:37189e375ec7 legacy-trunk

Add T_PYSSIZET in structmember.h: This can be used for Py_ssize_t members. Simplify the implementation of UnicodeError objects: start and end attributes are now stored directly as Py_ssize_t members, which simplifies various get and set functions.
author Walter Dörwald <walter@livinglogic.de>
date Wed, 13 Jun 2007 16:57:12 +0000
parents e8413971212d
children 648577cc688a
line wrap: on
line diff
--- a/Python/structmember.c	Wed Jun 13 07:54:57 2007 +0000
+++ b/Python/structmember.c	Wed Jun 13 16:57:12 2007 +0000
@@ -85,6 +85,9 @@
 	case T_ULONG:
 		v = PyLong_FromUnsignedLong(*(unsigned long*)addr);
 		break;
+	case T_PYSSIZET:
+		v = PyInt_FromSsize_t(*(Py_ssize_t*)addr);
+		break;
 	case T_FLOAT:
 		v = PyFloat_FromDouble((double)*(float*)addr);
 		break;
@@ -263,6 +266,13 @@
 		}
 		break;
 		}
+	case T_PYSSIZET:{
+		*(Py_ssize_t*)addr = PyInt_AsSsize_t(v);
+		if ((*(Py_ssize_t*)addr == (Py_ssize_t)-1)
+		    && PyErr_Occurred())
+				return -1;
+		break;
+		}
 	case T_FLOAT:{
 		double double_val;
 		double_val = PyFloat_AsDouble(v);