diff -rup MuSE-0.9.1/src/inchannels.cpp MuSE-0.9.1-p1/src/inchannels.cpp
--- MuSE-0.9.1/src/inchannels.cpp	2004-12-13 01:26:37.000000000 +0100
+++ MuSE-0.9.1-p1/src/inchannels.cpp	2005-12-04 14:42:02.000000000 +0100
@@ -25,6 +25,7 @@
 #include <iostream>
 #include <stdio.h>
 #include <stdlib.h>
+#include <errno.h>
 #include <unistd.h>
 #include <string.h>
 #include <sys/types.h>
diff -rup MuSE-0.9.1/src/pipe.cpp MuSE-0.9.1-p1/src/pipe.cpp
--- MuSE-0.9.1/src/pipe.cpp	2004-12-13 01:26:37.000000000 +0100
+++ MuSE-0.9.1-p1/src/pipe.cpp	2005-12-04 14:41:48.000000000 +0100
@@ -31,6 +31,7 @@ Boston, MA 02111-1307, USA.
 #include <pipe.h>
 #include <jutils.h>
 #include <config.h>
+#include <math.h>
 
 
 #define MIN(a,b) (a<=b) ? a : b; 
@@ -172,7 +173,8 @@ int Pipe::read(int length, void *data) {
   int worklen, origlen, truelen;
   int blk, len, buffered, buffered_bytes;
   int ttl = 0;
-  
+  u_int32_t dummy;
+
   if(read_blocking) ttl = read_blocking_time;
 
   lock();
@@ -225,9 +227,10 @@ int Pipe::read(int length, void *data) {
       (data, start,
        blk / read_copy_cb->src_samplesize);
     
-    (char*)start += blk;
+    /* (u_int32_t)start += blk; */
+    dummy=(u_int32_t)start+blk; start=(void*)dummy;
     len -= blk;
-    (char*)data += blk;
+    dummy=(u_int32_t)data+blk; data=(void*)dummy;
     worklen -= blk;
     if ((end!=buffer) && (start==bufferEnd))
       start = buffer;
@@ -238,8 +241,10 @@ int Pipe::read(int length, void *data) {
 	(data, start,
 	 len / read_copy_cb->src_samplesize);
       
-      (char*)data += len;
-      (char*)start += len;
+      dummy=(u_int32_t)data+len; data=(void*)dummy;
+      /* (char*)data += len; */
+      dummy=(u_int32_t)start+len; start=(void*)dummy;
+      /* (char*)start += len; */
       worklen -= len;
       if ((end!=buffer) && (start==bufferEnd))
 	start = buffer;
@@ -254,6 +259,7 @@ int Pipe::write(int length, void *data) 
   int worklen, origlen, space_samples;
   int space_bytes, len, truelen, blk;
   int ttl = 0;
+  u_int32_t	dummy;
 
   if(write_blocking) ttl = write_blocking_time;
 
@@ -304,9 +310,11 @@ int Pipe::write(int length, void *data) 
       (end, data,
        blk / write_copy_cb->dst_samplesize);
 
-      (char*)end += blk;
+      dummy=(u_int32_t)end+blk; end=(void*)dummy;
+      /* (char*)end += blk; */
       len -= blk;
-      (char*)data += blk;
+      dummy=(u_int32_t)data+blk; data=(void*)dummy;
+      /* (char*)data += blk; */
       worklen -= blk;
       if ((start!=buffer)
 	  && (end==bufferEnd))
@@ -318,8 +326,10 @@ int Pipe::write(int length, void *data) 
 	(end, data,
 	 len / write_copy_cb->dst_samplesize);
 
-      (char*)data += len;
-      (char*)end += len;
+      dummy=(u_int32_t)data+len; data=(void*)dummy;
+      /* (char*)data += len; */
+      dummy=(u_int32_t)end+len; end=(void*)dummy;
+      /* (char*)end += len; */
       worklen -= len;
       
       if ((start!=buffer)
