[Python-checkins] CVS: python/dist/src/Python compile.c,2.229,2.230 marshal.c,1.68,1.69

Jeremy Hylton jhylton@users.sourceforge.net
2001年11月09日 14:02:50 -0800


Update of /cvsroot/python/python/dist/src/Python
In directory usw-pr-cvs1:/tmp/cvs-serv12872
Modified Files:
	compile.c marshal.c 
Log Message:
Use PyObject_CheckReadBuffer().
Index: compile.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v
retrieving revision 2.229
retrieving revision 2.230
diff -C2 -d -r2.229 -r2.230
*** compile.c	2001年11月09日 19:50:08	2.229
--- compile.c	2001年11月09日 22:02:46	2.230
***************
*** 269,273 ****
 	PyCodeObject *co;
 	int i;
- 	PyBufferProcs *pb;
 	/* Check argument types */
 	if (argcount < 0 || nlocals < 0 ||
--- 269,272 ----
***************
*** 280,293 ****
 	 name == NULL || !PyString_Check(name) ||
 	 filename == NULL || !PyString_Check(filename) ||
! 		lnotab == NULL || !PyString_Check(lnotab)) {
! 		PyErr_BadInternalCall();
! 		return NULL;
! 	}
! 	pb = code->ob_type->tp_as_buffer;
! 	if (pb == NULL ||
! 	 pb->bf_getreadbuffer == NULL ||
! 	 pb->bf_getsegcount == NULL ||
! 	 (*pb->bf_getsegcount)(code, NULL) != 1)
! 	{
 		PyErr_BadInternalCall();
 		return NULL;
--- 279,284 ----
 	 name == NULL || !PyString_Check(name) ||
 	 filename == NULL || !PyString_Check(filename) ||
! 	 lnotab == NULL || !PyString_Check(lnotab) ||
! 	 !PyObject_CheckReadBuffer(code)) {
 		PyErr_BadInternalCall();
 		return NULL;
Index: marshal.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/marshal.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -C2 -d -r1.68 -r1.69
*** marshal.c	2001年10月19日 01:46:21	1.68
--- marshal.c	2001年11月09日 22:02:48	1.69
***************
*** 109,113 ****
 {
 	int i, n;
- 	PyBufferProcs *pb;
 
 	p->depth++;
--- 109,112 ----
***************
*** 250,260 ****
 		w_object(co->co_lnotab, p);
 	}
! 	else if ((pb = v->ob_type->tp_as_buffer) != NULL &&
! 		 pb->bf_getsegcount != NULL &&
! 		 pb->bf_getreadbuffer != NULL &&
! 		 (*pb->bf_getsegcount)(v, NULL) == 1)
! 	{
 		/* Write unknown buffer-style objects as a string */
 		char *s;
 		w_byte(TYPE_STRING, p);
 		n = (*pb->bf_getreadbuffer)(v, 0, (void **)&s);
--- 249,256 ----
 		w_object(co->co_lnotab, p);
 	}
! 	else if (PyObject_CheckReadBuffer(v)) {
 		/* Write unknown buffer-style objects as a string */
 		char *s;
+ 		PyBufferProcs *pb = v->ob_type->tp_as_buffer;
 		w_byte(TYPE_STRING, p);
 		n = (*pb->bf_getreadbuffer)(v, 0, (void **)&s);

AltStyle によって変換されたページ (->オリジナル) /