From: Thomas Heller Date: Thu, 22 Mar 2007 20:34:37 +0000 (+0000) Subject: Explain the purpose of the b_needsfree flag (forward ported from release25-maint). X-Git-Tag: v2.6a1~1946 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=82730f8d11050a567c6db88c91e7d788d8048e09;p=python Explain the purpose of the b_needsfree flag (forward ported from release25-maint). --- diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index cce16ca53b..cfff1a9638 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -2181,6 +2181,12 @@ static void CData_MallocBuffer(CDataObject *obj, StgDictObject *dict) if ((size_t)dict->size <= sizeof(obj->b_value)) { /* No need to call malloc, can use the default buffer */ obj->b_ptr = (char *)&obj->b_value; + /* The b_needsfree flag does not mean that we actually did + call PyMem_Malloc to allocate the memory block; instead it + means we are the *owner* of the memory and are responsible + for freeing resources associated with the memory. This is + also the reason that b_needsfree is exposed to Python. + */ obj->b_needsfree = 1; } else { /* In python 2.4, and ctypes 0.9.6, the malloc call took about