diff --git a/src/configure.in b/src/configure.in
index 808440090b2eee0caa49df5404c4066203772d2d..1bfdc77c0fe2407052b10ae8c74a664ff4760066 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -4542,7 +4542,6 @@ AC_CHECK_FUNCS( \
  strptime \
  mallinfo \
  mallopt \
- memchr \
  mktime \
  perror \
  ptrace \
diff --git a/src/pike_memory.h b/src/pike_memory.h
index 49f81d599328cb2fc50fefd579dd076ee880672b..98adb2c07ecb86f2875059d46857f52b09aa97bb 100644
--- a/src/pike_memory.h
+++ b/src/pike_memory.h
@@ -197,7 +197,7 @@ extern int page_size;
 PMOD_EXPORT ptrdiff_t pcharp_memcmp(PCHARP a, PCHARP b, int sz) ATTRIBUTE((pure));
 PMOD_EXPORT long pcharp_strlen(PCHARP a)  ATTRIBUTE((pure));
 
-#define MEMCHR0 MEMCHR
+#define MEMCHR0 memchr
 p_wchar1 *MEMCHR1(p_wchar1 *p, p_wchar2 c, ptrdiff_t e)  ATTRIBUTE((pure));
 p_wchar2 *MEMCHR2(p_wchar2 *p, p_wchar2 c, ptrdiff_t e)  ATTRIBUTE((pure));
 
diff --git a/src/port.c b/src/port.c
index a0274529d8883d2820b564824e268cd82d05e3ea..1c562db1d589fa089a791c883ff2d3b7ef02b5a7 100644
--- a/src/port.c
+++ b/src/port.c
@@ -262,16 +262,6 @@ PMOD_EXPORT int STRCASECMP(const char *a,const char *b)
 }
 #endif
 
-#ifndef HAVE_MEMCHR
-PMOD_EXPORT void *MEMCHR(const void *p,char c,size_t e)
-{
-  const char *t = p;
-  while(e--) if(*(t++)==c) return t-1;
-  return (char *)NULL;
-}
-#endif
-
-
 #if !defined(HAVE_INDEX) && !defined(HAVE_STRCHR)
 PMOD_EXPORT char *STRCHR(char *s,int c)
 {
diff --git a/src/port.h b/src/port.h
index 2333dfa9269b4dd7d8bfc4758ce8688f8c2a5cad..4c7fffea17a7d6534b77354a3cce2166cd0afe50 100644
--- a/src/port.h
+++ b/src/port.h
@@ -182,11 +182,8 @@ PMOD_EXPORT int STRCASECMP(const char *a,const char *b);
 #define HAVE_MEMCMP 1
 #define MEMCMP(X,Y,Z) memcmp((X),(Y),(Z))
 
-#ifndef HAVE_MEMCHR
-PMOD_EXPORT void *MEMCHR(const void *p,char c,size_t e);
-#else
-#  define MEMCHR(X,Y,Z) ((void *)memchr(X,Y,Z))
-#endif
+#define HAVE_MEMCHR 1
+#define MEMCHR(X,Y,Z) memchr(X,Y,Z)
 
 #ifndef HAVE_STRCHR
 PMOD_EXPORT char *STRCHR(char *s,int c);
diff --git a/src/stralloc.c b/src/stralloc.c
index 99de0b41947a9a44be336b757fa30f8a1abd305f..d3d98b76e98ddd127ea63cd69d2cb8ddfd7bed97 100644
--- a/src/stralloc.c
+++ b/src/stralloc.c
@@ -3223,7 +3223,7 @@ PMOD_EXPORT PCHARP MEMCHR_PCHARP(PCHARP ptr, int chr, ptrdiff_t len)
 {
   switch(ptr.shift)
   {
-    case 0: return MKPCHARP(MEMCHR(ptr.ptr,chr,len),0);
+    case 0: return MKPCHARP(memchr(ptr.ptr,chr,len),0);
     case 1: return MKPCHARP(MEMCHR1((p_wchar1 *)ptr.ptr,chr,len),1);
     case 2: return MKPCHARP(MEMCHR2((p_wchar2 *)ptr.ptr,chr,len),2);
   }