diff --git a/src/cpp.c b/src/cpp.c
index e049f8931cb7cde73220fc05c8fe5335e52a412a..e641880888fe829d6e521b5e70c162420b203b8d 100644
--- a/src/cpp.c
+++ b/src/cpp.c
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: cpp.c,v 1.66 2000/06/16 15:37:10 lange Exp $
+ * $Id: cpp.c,v 1.67 2000/08/08 19:44:06 grubba Exp $
  */
 #include "global.h"
 #include "stralloc.h"
@@ -551,9 +551,9 @@ static struct pike_string *recode_string(struct pike_string *data)
 	(!((unsigned char *)data->str)[1])) {
       /* 32bit Unicode (UCS4) */
       struct pike_string *new_str;
-      int len;
-      int i;
-      int j;
+      ptrdiff_t len;
+      ptrdiff_t i;
+      ptrdiff_t j;
       p_wchar0 *orig = STR0(data);
       p_wchar2 *dest;
 
@@ -622,7 +622,7 @@ static struct pike_string *recode_string(struct pike_string *data)
     struct pike_string *new_str;
     char *p = strchr(data->str, '\n');
     char *p2;
-    unsigned int len;
+    size_t len;
 
     if (!p) {
       return data;
@@ -646,7 +646,7 @@ static struct pike_string *recode_string(struct pike_string *data)
 
     /* Various consistency checks. */
     if ((sp[-1].type != T_STRING) || (sp[-1].u.string->size_shift) ||
-	(((unsigned int)sp[-1].u.string->len) < CONSTANT_STRLEN("#charset")) ||
+	(((size_t)sp[-1].u.string->len) < CONSTANT_STRLEN("#charset")) ||
 	(sp[-1].u.string->str[0] != '#')) {
       pop_stack();
       return data;
diff --git a/src/interpret_functions.h b/src/interpret_functions.h
index 1bac41ee1e9a8a7a4718c7241ff4eaf6ba8deddc..5f8d59a6f80255ad1da25cdf53a34d3efc556429 100644
--- a/src/interpret_functions.h
+++ b/src/interpret_functions.h
@@ -1,5 +1,5 @@
 /*
- * $Id: interpret_functions.h,v 1.28 2000/08/07 16:12:39 grubba Exp $
+ * $Id: interpret_functions.h,v 1.29 2000/08/08 19:37:13 grubba Exp $
  *
  * Opcode definitions for the interpreter.
  */
@@ -704,15 +704,17 @@ OPCODE0(F_ASSIGN, "assign")
 BREAK;
 
 OPCODE2(F_APPLY_ASSIGN_LOCAL_AND_POP,"apply, assign local and pop")
-  strict_apply_svalue(Pike_fp->context.prog->constants + arg1, Pike_sp - *--Pike_mark_sp );
+  strict_apply_svalue(&((Pike_fp->context.prog->constants + arg1)->sval),
+		      DO_NOT_WARN(Pike_sp - *--Pike_mark_sp));
   free_svalue(Pike_fp->locals+arg2);
   Pike_fp->locals[arg2]=Pike_sp[-1];
   Pike_sp--;
 BREAK;
 
 OPCODE2(F_APPLY_ASSIGN_LOCAL,"apply, assign local")
-  strict_apply_svalue(Pike_fp->context.prog->constants + arg1, Pike_sp - *--Pike_mark_sp );
-  assign_svalue(Pike_fp->locals+arg2,Pike_sp-1);
+  strict_apply_svalue(&((Pike_fp->context.prog->constants + arg1)->sval),
+		      DO_NOT_WARN(Pike_sp - *--Pike_mark_sp));
+  assign_svalue(Pike_fp->locals+arg2, Pike_sp-1);
 BREAK;
 
 OPCODE0(F_ASSIGN_AND_POP, "assign and pop")
@@ -1478,21 +1480,21 @@ OPCODE1(F_CALL_LFUN_AND_POP,"call lfun & pop")
 BREAK;
 
 OPCODE1(F_MARK_APPLY,"mark apply")
- strict_apply_svalue(Pike_fp->context.prog->constants + arg1, 0);
+ strict_apply_svalue(&((Pike_fp->context.prog->constants + arg1)->sval), 0);
 BREAK;
 
 OPCODE1(F_MARK_APPLY_POP,"mark, apply & pop")
-  strict_apply_svalue(Pike_fp->context.prog->constants + arg1, 0);
+  strict_apply_svalue(&((Pike_fp->context.prog->constants + arg1)->sval), 0);
   pop_stack();
 BREAK;
 
     CASE(F_APPLY);
-      strict_apply_svalue(Pike_fp->context.prog->constants + GET_ARG(),
+      strict_apply_svalue(&((Pike_fp->context.prog->constants + GET_ARG())->sval),
 			  DO_NOT_WARN(Pike_sp - *--Pike_mark_sp ));
       break;
 
     CASE(F_APPLY_AND_POP);
-      strict_apply_svalue(Pike_fp->context.prog->constants + GET_ARG(),
+      strict_apply_svalue(&((Pike_fp->context.prog->constants + GET_ARG())->sval),
 			  DO_NOT_WARN(Pike_sp - *--Pike_mark_sp ));
       pop_stack();
       break;