[Python-checkins] bpo-45459: Rename buffer.h to pybuffer.h (#31201)

vstinner webhook-mailer at python.org
Tue Feb 22 17:11:59 EST 2022


https://github.com/python/cpython/commit/66b3cd7063322a9f5c922a97bbd06fdb98309999
commit: 66b3cd7063322a9f5c922a97bbd06fdb98309999
branch: main
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-02-22T23:11:48+01:00
summary:

bpo-45459: Rename buffer.h to pybuffer.h (#31201)

Rename Include/buffer.h header file to Include/pybuffer.h to avoid
conflicts with projects having an existing "buffer.h" header file.

* Incude pybuffer.h before object.h in Python.h.
* Remove #include "buffer.h" from Include/cpython/object.h.
* Add a forward declaration of the PyObject type in pybuffer.h to fix
  an inter-dependency issue.

files:
A Include/pybuffer.h
A Misc/NEWS.d/next/C API/2022-02-07-18-47-00.bpo-45459.0FCWM8.rst
D Include/buffer.h
M Include/Python.h
M Include/cpython/object.h
M Makefile.pre.in
M PCbuild/pythoncore.vcxproj
M PCbuild/pythoncore.vcxproj.filters

diff --git a/Include/Python.h b/Include/Python.h
index 5416b04e4bfb3..5bc8cc656af0d 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 2ee97ba0b40af..6cc3d72ca7084 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
similarity index 96%
rename from Include/buffer.h
rename to Include/pybuffer.h
index 6893505e66e3e..31795b780710f 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 2464bbdf2ddd0..2a3e0fbceb4c0 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 0000000000000..711c107746d64
--- /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 8f9c4fe63b8dc..c2f1a016bc111 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 dc3b554779486..b300103bbb420 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>



More information about the Python-checkins mailing list