]> granicus.if.org Git - python/commitdiff
Explain the purpose of the b_needsfree flag. This answers Neals
authorThomas Heller <theller@ctypes.org>
Thu, 22 Mar 2007 20:33:04 +0000 (20:33 +0000)
committerThomas Heller <theller@ctypes.org>
Thu, 22 Mar 2007 20:33:04 +0000 (20:33 +0000)
question (well, two months too late).

Modules/_ctypes/_ctypes.c

index 53064562e1b96bb4dbabf02ee419bd5df4d4d080..941da0b56d4f75c1cc817a219120d61c2379f09d 100644 (file)
@@ -2181,7 +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;
-               /* XXX(nnorwitz): shouldn't b_needsfree be 0? */
+               /* 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