diff --git a/Include/abstract.h b/Include/abstract.h
index dd58e3f..2399079 100644
--- a/Include/abstract.h
+++ b/Include/abstract.h
@@ -1236,6 +1236,13 @@
 
 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 372b0b3..1055165 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -354,6 +354,9 @@
 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 d5a5d3c..612271d 100644
--- a/Objects/abstract.c
+++ b/Objects/abstract.c
@@ -413,7 +413,7 @@
 
 
 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 @@
 }
 
 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 @@
 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 @@
     }
 
     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 @@
 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 @@
     }
 
     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 @@
         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 70ae6cc..9a62dd8 100644
--- a/Objects/memoryobject.c
+++ b/Objects/memoryobject.c
@@ -172,9 +172,6 @@
     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 @@
         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);
