This could be simplified quite a bit by using PyObject_AsReadBuffer() from abstract.h ... Cheers, -g On Thu, Jul 27, 2000 at 08:44:43PM -0700, Mark Hammond wrote: > 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; > > > _______________________________________________ > Python-checkins mailing list > Python-checkins@python.org > http://www.python.org/mailman/listinfo/python-checkins -- Greg Stein, http://www.lyra.org/
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4