diff --git a/src/encode.c b/src/encode.c
index d9ed2485447dd433cfc2cf77bab2bd78ec3fe163..eacb199e932cca2f02fdd8c860f964a23d92e878 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -306,7 +306,7 @@ static void decode_value2(struct decode_data *data)
     data->counter.u.integer++;
     if(data->ptr + num > data->len)
       error("Failed to decode string. (string range error)\n");
-    push_string(make_shared_binary_string(data->data + data->ptr, num));
+    push_string(make_shared_binary_string((char *)(data->data + data->ptr), num));
     data->ptr+=num;
     break;
 
@@ -422,7 +422,7 @@ static INT32 my_decode(struct pike_string *tmp)
   data=&d;
   data->counter.type=T_INT;
   data->counter.u.integer=COUNTER_START;
-  data->data=tmp->str;
+  data->data=(unsigned char *)tmp->str;
   data->len=tmp->len;
   data->ptr=0;
 
diff --git a/src/signal_handler.c b/src/signal_handler.c
index 9c8784142ee5e188811664a1089d6e4f92fba251..fee73c172ea6a3355c8b5a08f7040e471c9345de 100644
--- a/src/signal_handler.c
+++ b/src/signal_handler.c
@@ -187,7 +187,7 @@ static int my_signal(int sig, sigfunctype fun)
     sigvec(sig,&action,0);
   }
 #else
-  signal(sig, func);
+  signal(sig, fun);
 #endif
 #endif
 }