]> granicus.if.org Git - python/commitdiff
Hacks for MS_COREDLL
authorGuido van Rossum <guido@python.org>
Sun, 21 Jul 1996 02:23:54 +0000 (02:23 +0000)
committerGuido van Rossum <guido@python.org>
Sun, 21 Jul 1996 02:23:54 +0000 (02:23 +0000)
Include/objimpl.h

index 139e3377ae3ff0a7abd023398c70436ce403c755..724ba982abd2f52a707c6c000553f4f3d56f5756 100644 (file)
@@ -47,12 +47,26 @@ object with n extra items.  The size is computed as tp_basicsize plus
 n * tp_itemsize.  This fills in the ob_size field as well.
 */
 
+#ifndef MS_COREDLL
 extern PyObject *_PyObject_New Py_PROTO((PyTypeObject *));
 extern varobject *_PyObject_NewVar Py_PROTO((PyTypeObject *, int));
 
 #define PyObject_NEW(type, typeobj) ((type *) _PyObject_New(typeobj))
 #define PyObject_NEW_VAR(type, typeobj, n) ((type *) _PyObject_NewVar(typeobj, n))
 
+#else
+/* For an MS-Windows DLL, we change the way an object is created, so that the
+   extension module's malloc is used, rather than the core DLL malloc, as there is
+   no guarantee they will use the same heap
+*/
+extern PyObject *_PyObject_New Py_PROTO((PyTypeObject *, PyObject *));
+extern varobject *_PyObject_NewVar Py_PROTO((PyTypeObject *, int, varobject *));
+
+#define PyObject_NEW(type, typeobj) ((type *) _PyObject_New(typeobj,(PyObject *)malloc((typeobj)->tp_basicsize)))
+#define PyObject_NEW_VAR(type, typeobj, n) ((type *) _PyObject_NewVar(typeobj, n, (varobject *)malloc((typeobj)->tp_basicsize + n * (typeobj)->tp_itemsize)))
+
+#endif /* MS_COREDLL */
+
 #ifdef __cplusplus
 }
 #endif