[Python-Dev] Re: [Python-checkins] CVS: python/dist/src/PC _winreg.c,1.7,1.8 (original) (raw)

Greg Stein gstein@lyra.org
Tue, 1 Aug 2000 18:26:51 -0700


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 (!PyStringCheck(value)) ! return 0; ! *retDataSize = PyStringSize(value); *retDataBuf = (BYTE *)PyMemNEW(char, *retDataSize); --- 831,844 ---- *retDataSize = 0; else { ! void *srcbuf; ! PyBufferProcs *pb = value->obtype->tpasbuffer; ! if (pb==NULL) { ! PyErrFormat(PyExcTypeError, ! "Objects of type '%s' can not " ! "be used as binary registry values", ! value->obtype->tpname); ! return FALSE; ! } ! *retDataSize = (*pb->bfgetreadbuffer)(value, 0, &srcbuf); *retDataBuf = (BYTE *)PyMemNEW(char, *retDataSize); *************** *** 840,847 **** return FALSE; } ! memcpy(*retDataBuf, ! PyStringASSTRING( ! (PyStringObject *)value), ! *retDataSize); } break; --- 847,851 ---- return FALSE; } ! memcpy(*retDataBuf, srcbuf, *retDataSize); } break;


Python-checkins mailing list Python-checkins@python.org http://www.python.org/mailman/listinfo/python-checkins

-- Greg Stein, http://www.lyra.org/