diff --git a/src/acconfig.h b/src/acconfig.h
index 4a6db15a320db5d77eb0d934354a519ca0c8a38f..9ed6da30e769f9dd5a864491af928504692c4cd8 100644
--- a/src/acconfig.h
+++ b/src/acconfig.h
@@ -647,6 +647,31 @@
 /* dlmalloc has mallinfo. */
 #if defined(USE_DL_MALLOC) && !defined(HAVE_MALLINFO)
 #define HAVE_MALLINFO
+
+#if defined (HAVE_MALLOC_H) && defined (HAVE_STRUCT_MALLINFO)
+#include <malloc.h>
+#else /* HAVE_MALLOC_H && HAVE_STRUCT_MALLINFO */
+
+#ifndef MALLINFO_FIELD_TYPE
+#define MALLINFO_FIELD_TYPE size_t
+#endif  /* MALLINFO_FIELD_TYPE */
+
+/* dlmalloc definition of struct mallinfo. */
+struct mallinfo {
+  MALLINFO_FIELD_TYPE arena;    /* non-mmapped space allocated from system */
+  MALLINFO_FIELD_TYPE ordblks;  /* number of free chunks */
+  MALLINFO_FIELD_TYPE smblks;   /* always 0 */
+  MALLINFO_FIELD_TYPE hblks;    /* always 0 */
+  MALLINFO_FIELD_TYPE hblkhd;   /* space in mmapped regions */
+  MALLINFO_FIELD_TYPE usmblks;  /* maximum total allocated space */
+  MALLINFO_FIELD_TYPE fsmblks;  /* always 0 */
+  MALLINFO_FIELD_TYPE uordblks; /* total allocated space */
+  MALLINFO_FIELD_TYPE fordblks; /* total free space */
+  MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */
+};
+
+#endif /* HAVE_USR_INCLUDE_MALLOC_H */
+
 #endif
 
 #endif /* MACHINE_H */
diff --git a/src/malloc.c b/src/malloc.c
index 034e644204d1b84825b451713d56d79f8d7693a2..2cec7b1062cf39383c14ffb9c3d6be3386c0cd83 100644
--- a/src/malloc.c
+++ b/src/malloc.c
@@ -625,30 +625,13 @@ DEFAULT_MMAP_THRESHOLD       default: 256K
 
 /* #define HAVE_USR_INCLUDE_MALLOC_H */
 
-#ifdef HAVE_USR_INCLUDE_MALLOC_H
-#include "/usr/include/malloc.h"
-
 /* PIKE change start */
-#elif defined (HAVE_MALLOC_H) && defined (HAVE_STRUCT_MALLINFO)
-#include <malloc.h>
-/* PIKE change end */
 
-#else /* HAVE_USR_INCLUDE_MALLOC_H */
-
-struct mallinfo {
-  MALLINFO_FIELD_TYPE arena;    /* non-mmapped space allocated from system */
-  MALLINFO_FIELD_TYPE ordblks;  /* number of free chunks */
-  MALLINFO_FIELD_TYPE smblks;   /* always 0 */
-  MALLINFO_FIELD_TYPE hblks;    /* always 0 */
-  MALLINFO_FIELD_TYPE hblkhd;   /* space in mmapped regions */
-  MALLINFO_FIELD_TYPE usmblks;  /* maximum total allocated space */
-  MALLINFO_FIELD_TYPE fsmblks;  /* always 0 */
-  MALLINFO_FIELD_TYPE uordblks; /* total allocated space */
-  MALLINFO_FIELD_TYPE fordblks; /* total free space */
-  MALLINFO_FIELD_TYPE keepcost; /* releasable (via malloc_trim) space */
-};
+/* This is handled by global.h (aka acconfig.h) included
+ * at the top of the file.
+ */
 
-#endif /* HAVE_USR_INCLUDE_MALLOC_H */
+/* PIKE change end */
 #endif /* NO_MALLINFO */
 
 #ifdef __cplusplus