diff --git a/src/buffer.c b/src/buffer.c
index c54df88..c1ffe75 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2450,7 +2450,7 @@
 	else
 	    home_replace(buf, buf->b_fname, NameBuff, MAXPATHL, TRUE);
 
-	vim_snprintf((char *)IObuff, IOSIZE - 20, "%3d%c%c%c%c%c \"%s\"",
+	len = vim_snprintf((char *)IObuff, IOSIZE - 20, "%3d%c%c%c%c%c \"%s\"",
 		buf->b_fnum,
 		buf->b_p_bl ? ' ' : 'u',
 		buf == curbuf ? '%' :
@@ -2463,7 +2463,6 @@
 		NameBuff);
 
 	/* put "line 999" in column 40 or after the file name */
-	len = STRLEN(IObuff);
 	i = 40 - vim_strsize(IObuff);
 	do
 	{
diff --git a/src/main.aap b/src/main.aap
index 564ca07..daa6e8b 100644
--- a/src/main.aap
+++ b/src/main.aap
@@ -152,17 +152,6 @@
 	GUI_TARGETS	= installglinks
 	GUI_MAN_TARGETS	= installghelplinks
 	GUI_TESTTARGET	= gui
-    BEOSGUI
-	GUI_SRC		= gui.c gui_beos.cc pty.c
-	GUI_OBJ		=
-	GUI_DEFS	= -DFEAT_GUI_BEOS
-	GUI_IPATH	=
-	GUI_LIBS_DIR	=
-	GUI_LIBS1	= -lbe -lroot
-	GUI_LIBS2	=
-	GUI_TARGETS	= installglinks
-	GUI_MAN_TARGETS	= installghelplinks
-	GUI_TESTTARGET	= gui
     PHOTONGUI
 	GUI_SRC		= gui.c gui_photon.c pty.c
 	GUI_OBJ		=
diff --git a/src/mark.c b/src/mark.c
index 9d74b4a..6a149bf 100644
--- a/src/mark.c
+++ b/src/mark.c
@@ -1445,7 +1445,6 @@
     char_u  *p;
     char_u  part[51];
     int	    retval = FALSE;
-    int	    n;
 
     name = home_replace_save(NULL, name);
     if (name != NULL)
@@ -1453,14 +1452,11 @@
 	for (p = p_viminfo; *p; )
 	{
 	    copy_option_part(&p, part, 51, ", ");
-	    if (part[0] == 'r')
+	    if (part[0] == 'r'
+			&& MB_STRNICMP(part + 1, name, STRLEN(part + 1)) == 0)
 	    {
-		n = STRLEN(part + 1);
-		if (MB_STRNICMP(part + 1, name, n) == 0)
-		{
-		    retval = TRUE;
-		    break;
-		}
+		retval = TRUE;
+		break;
 	    }
 	}
 	vim_free(name);
diff --git a/src/spell.c b/src/spell.c
index 2d80389..9db1b60 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -353,7 +353,7 @@
     char_u	*p;
 #endif
     int		res;
-    int		valid;
+    int		valid = FALSE;
     slang_T	*slang = mip->mi_lp->lp_slang;
     unsigned	flags;
     char_u	*byts;
@@ -1328,6 +1328,7 @@
     int		si_ascii;	/* handling only ASCII words */
     int		si_region;	/* region mask */
     vimconv_T	si_conv;	/* for conversion to 'encoding' */
+    int		si_memtot;	/* runtime memory used */
 } spellinfo_T;
 
 static afffile_T *spell_read_aff __ARGS((char_u *fname, spellinfo_T *spin));
@@ -1460,6 +1461,10 @@
 		    smsg((char_u *)_("Conversion in %s not supported: from %s to %s"),
 					       fname, aff->af_enc, p_enc);
 	    }
+	    else if (STRCMP(items[0], "NOSPLITSUGS") == 0 && itemcnt == 1)
+	    {
+		/* ignored */
+	    }
 	    else if (STRCMP(items[0], "TRY") == 0 && itemcnt == 2
 						       && aff->af_try == NULL)
 	    {
@@ -2420,6 +2425,8 @@
      *  TODO.  Only write a zero length for now. */
     put_bytes(fd, 0L, 4);			/* <suggestlen> */
 
+    spin->si_memtot = 0;
+
     /*
      * <LWORDTREE>  <KWORDTREE>
      */
@@ -2434,6 +2441,7 @@
 
 	/* number of nodes in 4 bytes */
 	put_bytes(fd, (long_u)nodecount, 4);	/* <nodecount> */
+	spin->si_memtot += nodecount + nodecount * sizeof(int);
 
 	/* Write the nodes. */
 	(void)put_tree(fd, tree, 0, regionmask);
@@ -2699,6 +2707,9 @@
 	    out_flush();
 	    write_vim_spell(wfname, &spin, fcount - 1, region_name);
 	    MSG(_("Done!"));
+
+	    smsg((char_u *)_("Estimated runtime memory use: %d bytes"),
+							      spin.si_memtot);
 	    out_flush();
 	}
 
