[Python-checkins] CVS: python/dist/src/PC _winreg.c,1.7,1.8

Mark Hammond python-dev@python.org
Thu, 27 Jul 2000 20:44:43 -0700


Update of /cvsroot/python/python/dist/src/PC
In directory slayer.i.sourceforge.net:/tmp/cvs-serv12325

Modified Files:
	_winreg.c 
Log Message:
Allow any object supporting the buffer protocol to be written as a binary object.

Index: _winreg.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/PC/_winreg.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** _winreg.c	2000/07/16 12:04:32	1.7
--- _winreg.c	2000/07/28 03:44:41	1.8
***************
*** 831,837 ****
  				*retDataSize = 0;
  			else {
! 				if (!PyString_Check(value))
! 					return 0;
! 				*retDataSize = PyString_Size(value);
  				*retDataBuf = (BYTE *)PyMem_NEW(char,
  								*retDataSize);
--- 831,844 ----
  				*retDataSize = 0;
  			else {
! 				void *src_buf;
! 				PyBufferProcs *pb = value->ob_type->tp_as_buffer;
! 				if (pb==NULL) {
! 					PyErr_Format(PyExc_TypeError, 
! 						"Objects of type '%s' can not "
! 						"be used as binary registry values", 
! 						value->ob_type->tp_name);
! 					return FALSE;
! 				}
! 				*retDataSize = (*pb->bf_getreadbuffer)(value, 0, &src_buf);
  				*retDataBuf = (BYTE *)PyMem_NEW(char,
  								*retDataSize);
***************
*** 840,847 ****
  					return FALSE;
  				}
! 				memcpy(*retDataBuf,
! 				       PyString_AS_STRING(
! 				       		(PyStringObject *)value),
! 				       *retDataSize);
  			}
  			break;
--- 847,851 ----
  					return FALSE;
  				}
! 				memcpy(*retDataBuf, src_buf, *retDataSize);
  			}
  			break;