diff --git a/src/fdlib.h b/src/fdlib.h
index 1fe5ea8f5f368f479adf25a7a5b3b0311da033a9..c44ad39f73e149d0b52f787ab920643a070e753d 100644
--- a/src/fdlib.h
+++ b/src/fdlib.h
@@ -86,7 +86,7 @@ typedef off_t PIKE_OFF_T;
         debug_fd_query_properties(dmalloc_touch_fd(fd),(Y))
 #define fd_stat(F,BUF) debug_fd_stat(F,BUF)
 #define fd_lstat(F,BUF) debug_fd_stat(F,BUF)
-#define fd_open(X,Y,Z) dmalloc_register_fd(debug_fd_open((X),(Y),(Z)))
+#define fd_open(X,Y,Z) dmalloc_register_fd(debug_fd_open((X),(Y)|fd_BINARY,(Z)))
 #define fd_socket(X,Y,Z) dmalloc_register_fd(debug_fd_socket((X),(Y),(Z)))
 #define fd_pipe(X) debug_fd_pipe( (X) DMALLOC_POS )
 #define fd_accept(X,Y,Z) dmalloc_register_fd(debug_fd_accept((X),(Y),(Z)))
@@ -336,7 +336,7 @@ typedef off_t PIKE_OFF_T;
 
 #define fd_stat(F,BUF) stat(F,BUF)
 #define fd_lstat(F,BUF) lstat(F,BUF)
-#define fd_open(X,Y,Z) dmalloc_register_fd(open((X),(Y),(Z)))
+#define fd_open(X,Y,Z) dmalloc_register_fd(open((X),(Y)|fd_BINARY,(Z)))
 #define fd_socket(X,Y,Z) dmalloc_register_fd(socket((X),(Y),(Z)))
 #define fd_pipe pipe /* FIXME */
 #define fd_accept(X,Y,Z) dmalloc_register_fd(accept((X),(Y),(Z)))
diff --git a/src/object.c b/src/object.c
index 3e79e23d3876a6ade6fbdf81b4e6003b6a11fbfe..117c76ace7432c411ecfd001aa9593fed75c7d60 100644
--- a/src/object.c
+++ b/src/object.c
@@ -463,7 +463,7 @@ struct pike_string *low_read_file(const char *file)
   PIKE_OFF_T len;
   FD f;
 
-  while((f = fd_open(file,fd_RDONLY|fd_BINARY,0666)) <0 && errno==EINTR)
+  while((f = fd_open(file,fd_RDONLY,0666)) <0 && errno==EINTR)
     check_threads_etc();
   if(f >= 0)
   {