Browse Source

Bugfix: Use SOCKETTYPE for notifiers, to avoid potential overflow on Win64

Luke Dashjr 13 years ago
parent
commit
08dea64c4b
3 changed files with 9 additions and 8 deletions
  1. 1 1
      miner.c
  2. 3 3
      util.c
  3. 5 4
      util.h

+ 1 - 1
miner.c

@@ -229,7 +229,7 @@ pthread_mutex_t stats_lock;
 static pthread_mutex_t submitting_lock;
 static int total_submitting;
 static struct list_head submit_waiting;
-int submit_waiting_notifier[2];
+notifier_t submit_waiting_notifier;
 
 int hw_errors;
 int total_accepted, total_rejected, total_diff1;

+ 3 - 3
util.c

@@ -1781,7 +1781,7 @@ static const char *WindowsErrorStr(DWORD dwMessageId)
 }
 #endif
 
-void notifier_init(int pipefd[2])
+void notifier_init(notifier_t pipefd)
 {
 #ifdef WIN32
 	SOCKET listener, connecter, acceptor;
@@ -1825,7 +1825,7 @@ void notifier_init(int pipefd[2])
 #endif
 }
 
-void notifier_wake(int fd[2])
+void notifier_wake(notifier_t fd)
 {
 #ifdef WIN32
 	(void)send(fd[1], "\0", 1, 0);
@@ -1834,7 +1834,7 @@ void notifier_wake(int fd[2])
 #endif
 }
 
-void notifier_read(int fd[2])
+void notifier_read(notifier_t fd)
 {
 	char buf[0x10];
 #ifdef WIN32

+ 5 - 4
util.h

@@ -10,7 +10,7 @@
 	#include <netinet/in.h>
 	#include <arpa/inet.h>
 
-	#define SOCKETTYPE long
+	#define SOCKETTYPE int
 	#define SOCKETFAIL(a) ((a) < 0)
 	#define INVSOCK -1
 	#define INVINETADDR -1
@@ -70,9 +70,10 @@ void dev_error(struct cgpu_info *dev, enum dev_reason reason);
 void *realloc_strcat(char *ptr, char *s);
 void RenameThread(const char* name);
 
-extern void notifier_init(int pipefd[2]);
-extern void notifier_wake(int fd[2]);
-extern void notifier_read(int fd[2]);
+typedef SOCKETTYPE notifier_t[2];
+extern void notifier_init(notifier_t);
+extern void notifier_wake(notifier_t);
+extern void notifier_read(notifier_t);
 
 /* Align a size_t to 4 byte boundaries for fussy arches */
 static inline void align_len(size_t *len)