[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