diff --git a/src/setup.h b/src/setup.h
index d85f85a35a9827531915f11c56da3d26ca2f061a..65eef4b4a3b04cdb6fa75ea4a6a0d4dc0907756a 100644
--- a/src/setup.h
+++ b/src/setup.h
@@ -23,8 +23,6 @@
  * $Id$
  ***************************************************************************/
 
-#include <stdio.h>
-
 #if !defined(WIN32) && defined(__WIN32__)
 /* Borland fix */
 #define WIN32
@@ -50,6 +48,15 @@
 #endif
 #endif
 
+#ifdef MALLOCDEBUG
+/* This is an ugly hack for MALLOCDEBUG conditions only. We need to include
+   the file here, since it might set the _FILE_OFFSET_BITS define, which must
+   be set BEFORE all normal system headers. */
+#include "../lib/setup.h"
+#endif
+
+#include <stdio.h>
+
 #ifndef OS
 #define OS "unknown"
 #endif