From f68c2a701bbca88da1299efe4aba84699827e791 Mon Sep 17 00:00:00 2001
From: Antoine Pitrou <solipsis@pitrou.net>
Date: Wed, 1 Sep 2010 12:58:21 +0000
Subject: [PATCH] Issue #3101: Helper functions _add_one_to_C() and
 _add_one_to_F() become _Py_add_one_to_C() and _Py_add_one_to_F(),
 respectively.

---
 Include/abstract.h     |  7 +++++++
 Misc/NEWS              |  3 +++
 Objects/abstract.c     | 18 +++++++++---------
 Objects/memoryobject.c |  7 ++-----
 4 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/Include/abstract.h b/Include/abstract.h
index dd58e3f9e5..23990799e7 100644
--- a/Include/abstract.h
+++ b/Include/abstract.h
@@ -1236,6 +1236,13 @@ PyAPI_FUNC(char *const *) _PySequence_BytesToCharpArray(PyObject* self);
 
 PyAPI_FUNC(void) _Py_FreeCharPArray(char *const array[]);
 
+/* For internal use by buffer API functions */
+PyAPI_FUNC(void) _Py_add_one_to_index_F(int nd, Py_ssize_t *index,
+                                        const Py_ssize_t *shape);
+PyAPI_FUNC(void) _Py_add_one_to_index_C(int nd, Py_ssize_t *index,
+                                        const Py_ssize_t *shape);
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/Misc/NEWS b/Misc/NEWS
index 372b0b3c42..1055165e3b 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -354,6 +354,9 @@ Tests
 Build
 -----
 
+- Issue #3101: Helper functions _add_one_to_C() and _add_one_to_F() become
+  _Py_add_one_to_C() and _Py_add_one_to_F(), respectively.
+
 - Issue #9700: define HAVE_BROKEN_POSIX_SEMAPHORES under AIX 6.x.  Patch by
   Sébastien Sablé.
 
diff --git a/Objects/abstract.c b/Objects/abstract.c
index d5a5d3c129..612271da2e 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -413,7 +413,7 @@ PyBuffer_GetPointer(Py_buffer *view, Py_ssize_t *indices)
 
 
 void
-_add_one_to_index_F(int nd, Py_ssize_t *index, Py_ssize_t *shape)
+_Py_add_one_to_index_F(int nd, Py_ssize_t *index, const Py_ssize_t *shape)
 {
     int k;
 
@@ -429,7 +429,7 @@ _add_one_to_index_F(int nd, Py_ssize_t *index, Py_ssize_t *shape)
 }
 
 void
-_add_one_to_index_C(int nd, Py_ssize_t *index, Py_ssize_t *shape)
+_Py_add_one_to_index_C(int nd, Py_ssize_t *index, const Py_ssize_t *shape)
 {
     int k;
 
@@ -453,7 +453,7 @@ int
 PyBuffer_ToContiguous(void *buf, Py_buffer *view, Py_ssize_t len, char fort)
 {
     int k;
-    void (*addone)(int, Py_ssize_t *, Py_ssize_t *);
+    void (*addone)(int, Py_ssize_t *, const Py_ssize_t *);
     Py_ssize_t *indices, elements;
     char *dest, *ptr;
 
@@ -480,10 +480,10 @@ PyBuffer_ToContiguous(void *buf, Py_buffer *view, Py_ssize_t len, char fort)
     }
 
     if (fort == 'F') {
-        addone = _add_one_to_index_F;
+        addone = _Py_add_one_to_index_F;
     }
     else {
-        addone = _add_one_to_index_C;
+        addone = _Py_add_one_to_index_C;
     }
     dest = buf;
     /* XXX : This is not going to be the fastest code in the world
@@ -504,7 +504,7 @@ int
 PyBuffer_FromContiguous(Py_buffer *view, void *buf, Py_ssize_t len, char fort)
 {
     int k;
-    void (*addone)(int, Py_ssize_t *, Py_ssize_t *);
+    void (*addone)(int, Py_ssize_t *, const Py_ssize_t *);
     Py_ssize_t *indices, elements;
     char *src, *ptr;
 
@@ -531,10 +531,10 @@ PyBuffer_FromContiguous(Py_buffer *view, void *buf, Py_ssize_t len, char fort)
     }
 
     if (fort == 'F') {
-        addone = _add_one_to_index_F;
+        addone = _Py_add_one_to_index_F;
     }
     else {
-        addone = _add_one_to_index_C;
+        addone = _Py_add_one_to_index_C;
     }
     src = buf;
     /* XXX : This is not going to be the fastest code in the world
@@ -611,7 +611,7 @@ int PyObject_CopyData(PyObject *dest, PyObject *src)
         elements *= view_src.shape[k];
     }
     while (elements--) {
-        _add_one_to_index_C(view_src.ndim, indices, view_src.shape);
+        _Py_add_one_to_index_C(view_src.ndim, indices, view_src.shape);
         dptr = PyBuffer_GetPointer(&view_dest, indices);
         sptr = PyBuffer_GetPointer(&view_src, indices);
         memcpy(dptr, sptr, view_src.itemsize);
diff --git a/Objects/memoryobject.c b/Objects/memoryobject.c
index 70ae6ccea0..9a62dd84bd 100644
--- a/Objects/memoryobject.c
+++ b/Objects/memoryobject.c
@@ -172,9 +172,6 @@ _strided_copy_nd(char *dest, char *src, int nd, Py_ssize_t *shape,
     return;
 }
 
-void _add_one_to_index_F(int nd, Py_ssize_t *index, Py_ssize_t *shape);
-void _add_one_to_index_C(int nd, Py_ssize_t *index, Py_ssize_t *shape);
-
 static int
 _indirect_copy_nd(char *dest, Py_buffer *view, char fort)
 {
@@ -203,10 +200,10 @@ _indirect_copy_nd(char *dest, Py_buffer *view, char fort)
         elements *= view->shape[k];
     }
     if (fort == 'F') {
-        func = _add_one_to_index_F;
+        func = _Py_add_one_to_index_F;
     }
     else {
-        func = _add_one_to_index_C;
+        func = _Py_add_one_to_index_C;
     }
     while (elements--) {
         func(view->ndim, indices, view->shape);
-- 
2.40.0