diff --git a/src/ex_eval.c b/src/ex_eval.c
index e2699bc..67f8b89 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -1601,8 +1601,8 @@
 		if (cstack->cs_pending[cstack->cs_idx] == CSTP_RETURN)
 		{
 		    report_discard_pending(CSTP_RETURN,
-			    cstack->cs_retvar[cstack->cs_idx]);
-		    discard_pending_return(cstack->cs_retvar[cstack->cs_idx]);
+					   cstack->cs_rettv[cstack->cs_idx]);
+		    discard_pending_return(cstack->cs_rettv[cstack->cs_idx]);
 		}
 		if (pending == CSTP_ERROR && !did_emsg)
 		    pending |= (THROW_ON_ERROR) ? CSTP_THROW : 0;
@@ -1647,7 +1647,7 @@
     int		skip;
     int		rethrow = FALSE;
     int		pending = CSTP_NONE;
-    void	*retvar = NULL;
+    void	*rettv = NULL;
     struct condstack	*cstack = eap->cstack;
 
     if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0)
@@ -1746,7 +1746,7 @@
 	    pending = cstack->cs_pending[idx];
 	    cstack->cs_pending[idx] = CSTP_NONE;
 	    if (pending == CSTP_RETURN)
-		retvar = cstack->cs_retvar[idx];
+		rettv = cstack->cs_rettv[idx];
 	    else if (pending & CSTP_THROW)
 		current_exception = cstack->cs_exception[idx];
 	}
@@ -1769,7 +1769,7 @@
 	if (!skip)
 	{
 	    report_resume_pending(pending,
-		    (pending == CSTP_RETURN) ? retvar :
+		    (pending == CSTP_RETURN) ? rettv :
 		    (pending & CSTP_THROW) ? (void *)current_exception : NULL);
 	    switch (pending)
 	    {
@@ -1790,7 +1790,7 @@
 		    ex_break(eap);
 		    break;
 		case CSTP_RETURN:
-		    do_return(eap, FALSE, FALSE, retvar);
+		    do_return(eap, FALSE, FALSE, rettv);
 		    break;
 		case CSTP_FINISH:
 		    do_finish(eap, FALSE);
@@ -2023,8 +2023,8 @@
 
 		    case CSTP_RETURN:
 			report_discard_pending(CSTP_RETURN,
-				cstack->cs_retvar[idx]);
-			discard_pending_return(cstack->cs_retvar[idx]);
+						      cstack->cs_rettv[idx]);
+			discard_pending_return(cstack->cs_rettv[idx]);
 			cstack->cs_pending[idx] = CSTP_NONE;
 			break;
 
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index e97dc4f..e9e6d5b 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -10,7 +10,7 @@
 /*
  * Porting to GTK+ was done by:
  *
- * (C) 1998,1999,2000 by Marcin Dalecki <dalecki@evision.ag>
+ * (C) 1998,1999,2000 by Marcin Dalecki <martin@dalecki.de>
  *
  * With GREAT support and continuous encouragements by Andy Kahn and of
  * course Bram Moolenaar!
diff --git a/src/po/pl.po b/src/po/pl.po
index 303d334..7f4030d 100644
--- a/src/po/pl.po
+++ b/src/po/pl.po
@@ -2,7 +2,7 @@
 # Polish Translation for Vim
 #
 # updated 2001 for vim-6.0
-# FIRST AUTHOR Marcin Dalecki <dalecki@cyber.cs.net.pl>, 2000.
+# FIRST AUTHOR Marcin Dalecki <martin@dalecki.de>, 2000.
 # Mikolaj Machowski <mikmach@wp.pl>, 2004.
 #
 msgid ""
diff --git a/src/structs.h b/src/structs.h
index 5a76036..0eba71f 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -598,7 +598,7 @@
     char	cs_flags[CSTACK_LEN];	/* CSF_ flags */
     char	cs_pending[CSTACK_LEN];	/* CSTP_: what's pending in ":finally"*/
     union {
-	void   *cs_pend_rv[CSTACK_LEN];	/* returnval for pending return */
+	void   *cs_pend_rv[CSTACK_LEN];	/* return typeval for pending return */
 	void   *cs_pend_ex[CSTACK_LEN];	/* exception for pending throw */
     }		cs_pend;
     int		cs_line[CSTACK_LEN];	/* line number of ":while" line */
@@ -611,7 +611,7 @@
     char	cs_had_endwhile;	/* just found ":endwhile" */
     char	cs_had_finally;		/* just found ":finally" */
 };
-# define cs_retvar	cs_pend.cs_pend_rv
+# define cs_rettv	cs_pend.cs_pend_rv
 # define cs_exception	cs_pend.cs_pend_ex
 
 # define CSF_TRUE	1	/* condition was TRUE */
@@ -1827,10 +1827,6 @@
     HMENU	submenu_id;	    /* If this is submenu, add children here */
     HWND	tearoff_handle;	    /* hWnd of tearoff if created */
 #endif
-#if FEAT_GUI_BEOS
-    BMenuItem	*id;		    /* Id of menu item */
-    BMenu	*submenu_id;	    /* If this is submenu, add children here */
-#endif
 #ifdef FEAT_GUI_MAC
 /*  MenuHandle	id; */
 /*  short	index;	*/	    /* the item index within the father menu */
@@ -1840,17 +1836,6 @@
     MenuHandle	menu_handle;
     MenuHandle	submenu_handle;
 #endif
-#if defined(FEAT_GUI_AMIGA)
-				    /* only one of these will ever be set, but
-				     * they are used to allow the menu routine
-				     * to easily get a hold of the parent menu
-				     * pointer which is needed by all items to
-				     * form the chain correctly */
-    int		    id;		    /* unused by the amiga, but used in the
-				     * code kept for compatibility */
-    struct Menu	    *menuPtr;
-    struct MenuItem *menuItemPtr;
-#endif
 #ifdef RISCOS
     int		*id;		    /* Not used, but gui.c needs it */
     int		greyed_out;	    /* Flag */
diff --git a/src/version.c b/src/version.c
index f27f0ea..106ca74 100644
--- a/src/version.c
+++ b/src/version.c
@@ -848,9 +848,6 @@
     MSG_PUTS(_("with X11-Athena GUI."));
 #    endif
 #   else
-#    ifdef FEAT_GUI_BEOS
-    MSG_PUTS(_("with BeOS GUI."));
-#    else
 #     ifdef FEAT_GUI_PHOTON
     MSG_PUTS(_("with Photon GUI."));
 #     else
@@ -873,7 +870,6 @@
 #	 endif
 #	endif
 #      endif
-#     endif
 #    endif
 #   endif
 #  endif
diff --git a/src/version.h b/src/version.h
index c56ae49..d543509 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 3)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 3, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 4)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2004 Jan 4, compiled "
