diff --git a/src/interpret_functions.h b/src/interpret_functions.h
index 21d86f1c9143da2bff30e3e383b49afc07b7d8c8..0db899384e8637567950e3b783d150bcd64d860b 100644
--- a/src/interpret_functions.h
+++ b/src/interpret_functions.h
@@ -2014,13 +2014,13 @@ OPCODE2_ALIAS(F_SSCANF, "sscanf", I_UPDATE_SP, o_sscanf);
 #define MKAPPLY(OP,OPCODE,NAME,TYPE,  ARG2, ARG3)			   \
   PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT(F_,OPCODE),NAME,			\
 			I_UPDATE_ALL, {					\
-                          LOCAL_VAR(PIKE_OPCODE_T *pc);                 \
+                          LOCAL_VAR(PIKE_OPCODE_T *addr);               \
 JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr);				\
-if((pc=low_mega_apply(TYPE,DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)),   \
+if((addr=low_mega_apply(TYPE,DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \
                       ARG2, ARG3)))                                           \
 {									   \
   Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL;				   \
-  DO_JUMP_TO(pc);                                                          \
+  DO_JUMP_TO(addr);                                                        \
 }									   \
 else {									\
   DO_JUMP_TO_NEXT;							\
@@ -2029,29 +2029,30 @@ else {									\
 									   \
   PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT3(F_,OPCODE,_AND_POP),NAME " & pop", \
 			I_UPDATE_ALL, {					\
-                          LOCAL_VAR(PIKE_OPCODE_T *pc);                 \
+                          LOCAL_VAR(PIKE_OPCODE_T *addr);               \
   JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr);			\
-  if((pc=low_mega_apply(TYPE, DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \
+  if((addr=low_mega_apply(TYPE, DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \
                         ARG2, ARG3)))                                         \
   {									   \
     Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL | PIKE_FRAME_RETURN_POP;  \
-    DO_JUMP_TO(pc);                                                        \
+    DO_JUMP_TO(addr);                                                      \
   }else{								   \
     pop_stack();							   \
-    DO_JUMP_TO_NEXT;							\
+    DO_JUMP_TO_NEXT;							   \
   }									   \
 });									   \
 									   \
 PIKE_CONCAT(OP,_RETURN)(PIKE_CONCAT3(F_,OPCODE,_AND_RETURN),		   \
-			NAME " & return",				\
-			I_UPDATE_ALL, {	\
-                          LOCAL_VAR(PIKE_OPCODE_T *pc);                 \
-  if((pc = low_mega_apply(TYPE,DO_NOT_WARN((INT32)(Pike_sp - *--Pike_mark_sp)), \
-                          ARG2,ARG3)))                                        \
+			NAME " & return",				   \
+			I_UPDATE_ALL, {					   \
+                          LOCAL_VAR(PIKE_OPCODE_T *addr);                  \
+  if((addr = low_mega_apply(TYPE,DO_NOT_WARN(				   \
+				 (INT32)(Pike_sp - *--Pike_mark_sp)),      \
+                          ARG2,ARG3)))                                     \
   {									   \
     DO_IF_DEBUG(Pike_fp->next->pc=0);					   \
     unlink_previous_frame();						   \
-    DO_JUMP_TO(pc);							   \
+    DO_JUMP_TO(addr);							   \
   }else{								   \
     DO_DUMB_RETURN;							   \
   }									   \
@@ -2062,34 +2063,34 @@ PIKE_CONCAT(OP,_RETURN)(PIKE_CONCAT3(F_,OPCODE,_AND_RETURN),		   \
 									   \
 MKAPPLY(OP,OPCODE,NAME,TYPE,  ARG2, ARG3);			           \
 									   \
-PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT(F_MARK_,OPCODE),"mark, " NAME, \
-		      I_UPDATE_ALL, {					\
-                          LOCAL_VAR(PIKE_OPCODE_T *pc);                 \
-  JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr);			\
-  if((pc=low_mega_apply(TYPE, 0,                                           \
+PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT(F_MARK_,OPCODE),"mark, " NAME,	   \
+		      I_UPDATE_ALL, {					   \
+                          LOCAL_VAR(PIKE_OPCODE_T *addr);                  \
+  JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr);			   \
+  if((addr=low_mega_apply(TYPE, 0,					   \
                         ARG2, ARG3)))					   \
   {									   \
     Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL;			   \
-    DO_JUMP_TO(pc);						   \
+    DO_JUMP_TO(addr);						   	   \
+  }									   \
+  else {								   \
+    DO_JUMP_TO_NEXT;							   \
   }									   \
-  else {								\
-    DO_JUMP_TO_NEXT;							\
-  }									\
 });									   \
 									   \
 PIKE_CONCAT(OP,_JUMP)(PIKE_CONCAT3(F_MARK_,OPCODE,_AND_POP),		\
 		      "mark, " NAME " & pop",				\
 		      I_UPDATE_ALL, {					\
-                          LOCAL_VAR(PIKE_OPCODE_T *pc);                 \
+                          LOCAL_VAR(PIKE_OPCODE_T *addr);               \
   JUMP_SET_TO_PC_AT_NEXT (Pike_fp->return_addr);			\
-  if((pc=low_mega_apply(TYPE, 0,                                           \
+  if((addr=low_mega_apply(TYPE, 0,                                         \
                         ARG2, ARG3)))					   \
   {									   \
     Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL | PIKE_FRAME_RETURN_POP;  \
-    DO_JUMP_TO(pc);						   \
+    DO_JUMP_TO(addr);						   	   \
   }else{								   \
     pop_stack();							   \
-    DO_JUMP_TO_NEXT;							\
+    DO_JUMP_TO_NEXT;							   \
   }									   \
 });									   \
 									   \
diff --git a/src/interpreter.h b/src/interpreter.h
index bf95f1aaced74c799246bdf3a3ed970e6ff89bbd..d97766ee7d2aaf1654d7a25670e69bbc09b1785c 100644
--- a/src/interpreter.h
+++ b/src/interpreter.h
@@ -101,6 +101,7 @@ static int eval_instruction(PIKE_OPCODE_T *pc)
   struct program *p;
   struct object *o;
   struct svalue *s;
+  PIKE_OPCODE_T *addr;
   DO_IF_DEBUG(dynamic_buffer save_buf);
 
 #undef LOCAL_VAR