summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Include/Python.h2
-rw-r--r--Include/cpython/object.h2
-rw-r--r--Include/pybuffer.h (renamed from Include/buffer.h)4
-rw-r--r--Makefile.pre.in2
-rw-r--r--Misc/NEWS.d/next/C API/2022-02-07-18-47-00.bpo-45459.0FCWM8.rst3
-rw-r--r--PCbuild/pythoncore.vcxproj1
-rw-r--r--PCbuild/pythoncore.vcxproj.filters3
7 files changed, 13 insertions, 4 deletions
diff --git a/Include/Python.h b/Include/Python.h
index 5416b04..5bc8cc6 100644
--- a/Include/Python.h
+++ b/Include/Python.h
@@ -39,6 +39,7 @@
#include "pymacro.h"
#include "pymath.h"
#include "pymem.h"
+#include "pybuffer.h"
#include "object.h"
#include "objimpl.h"
#include "typeslots.h"
@@ -50,7 +51,6 @@
#include "longobject.h"
#include "cpython/longintrepr.h"
#include "boolobject.h"
-#include "buffer.h"
#include "floatobject.h"
#include "complexobject.h"
#include "rangeobject.h"
diff --git a/Include/cpython/object.h b/Include/cpython/object.h
index 2ee97ba..6cc3d72 100644
--- a/Include/cpython/object.h
+++ b/Include/cpython/object.h
@@ -2,8 +2,6 @@
# error "this header file must not be included directly"
#endif
-#include "buffer.h" // for Py_buffer, included after PyObject has been defined
-
PyAPI_FUNC(void) _Py_NewReference(PyObject *op);
#ifdef Py_TRACE_REFS
diff --git a/Include/buffer.h b/Include/pybuffer.h
index 6893505..31795b7 100644
--- a/Include/buffer.h
+++ b/Include/pybuffer.h
@@ -17,6 +17,10 @@ extern "C" {
*
*/
+// Forward declaration to be able to include pybuffer.h before object.h:
+// pybuffer.h uses PyObject and object.h uses Py_buffer.
+typedef struct _object PyObject;
+
typedef struct {
void *buf;
PyObject *obj; /* owned reference */
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 2464bbd..2a3e0fb 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -1439,7 +1439,6 @@ PYTHON_HEADERS= \
$(srcdir)/Include/abstract.h \
$(srcdir)/Include/bltinmodule.h \
$(srcdir)/Include/boolobject.h \
- $(srcdir)/Include/buffer.h \
$(srcdir)/Include/bytearrayobject.h \
$(srcdir)/Include/bytesobject.h \
$(srcdir)/Include/ceval.h \
@@ -1472,6 +1471,7 @@ PYTHON_HEADERS= \
$(srcdir)/Include/osdefs.h \
$(srcdir)/Include/osmodule.h \
$(srcdir)/Include/patchlevel.h \
+ $(srcdir)/Include/pybuffer.h \
$(srcdir)/Include/pycapsule.h \
$(srcdir)/Include/pydtrace.h \
$(srcdir)/Include/pyerrors.h \
diff --git a/Misc/NEWS.d/next/C API/2022-02-07-18-47-00.bpo-45459.0FCWM8.rst b/Misc/NEWS.d/next/C API/2022-02-07-18-47-00.bpo-45459.0FCWM8.rst
new file mode 100644
index 0000000..711c107
--- /dev/null
+++ b/Misc/NEWS.d/next/C API/2022-02-07-18-47-00.bpo-45459.0FCWM8.rst
@@ -0,0 +1,3 @@
+Rename ``Include/buffer.h`` header file to ``Include/pybuffer.h`` to avoid
+conflits with projects having an existing ``buffer.h`` header file. Patch by
+Victor Stinner.
diff --git a/PCbuild/pythoncore.vcxproj b/PCbuild/pythoncore.vcxproj
index 8f9c4fe..c2f1a01 100644
--- a/PCbuild/pythoncore.vcxproj
+++ b/PCbuild/pythoncore.vcxproj
@@ -263,6 +263,7 @@
<ClInclude Include="..\Include\osmodule.h" />
<ClInclude Include="..\Include\patchlevel.h" />
<ClInclude Include="..\Include\py_curses.h" />
+ <ClInclude Include="..\Include\pybuffer.h" />
<ClInclude Include="..\Include\pycapsule.h" />
<ClInclude Include="..\Include\pyerrors.h" />
<ClInclude Include="..\Include\pyexpat.h" />
diff --git a/PCbuild/pythoncore.vcxproj.filters b/PCbuild/pythoncore.vcxproj.filters
index dc3b554..b300103 100644
--- a/PCbuild/pythoncore.vcxproj.filters
+++ b/PCbuild/pythoncore.vcxproj.filters
@@ -147,6 +147,9 @@
<ClInclude Include="..\Include\py_curses.h">
<Filter>Include</Filter>
</ClInclude>
+ <ClInclude Include="..\Include\pybuffer.h">
+ <Filter>Include</Filter>
+ </ClInclude>
<ClInclude Include="..\Include\pycapsule.h">
<Filter>Include</Filter>
</ClInclude>