diff --git a/src/spellfile.c b/src/spellfile.c
index 00ef019..6188aaf 100644
--- a/src/spellfile.c
+++ b/src/spellfile.c
@@ -1429,7 +1429,7 @@
 	for (p = from, s = to; *p != NUL && *s != NUL; )
 	{
 	    c = mb_cptr2char_adv(&p);
-	    mb_cptr_adv(s);
+	    MB_CPTR_ADV(s);
 	    if (c >= 256)
 		++lp->sl_sal_first[c & 0xff];
 	}
@@ -2802,7 +2802,7 @@
 			    {
 				p = aff_entry->ae_add
 						  + STRLEN(aff_entry->ae_add);
-				mb_ptr_back(aff_entry->ae_add, p);
+				MB_PTR_BACK(aff_entry->ae_add, p);
 				if (PTR2CHAR(p) == c_up)
 				{
 				    upper = TRUE;
@@ -2930,10 +2930,10 @@
 		{
 		    /* Replace underscore with space (can't include a space
 		     * directly). */
-		    for (p = items[1]; *p != NUL; mb_ptr_adv(p))
+		    for (p = items[1]; *p != NUL; MB_PTR_ADV(p))
 			if (*p == '_')
 			    *p = ' ';
-		    for (p = items[2]; *p != NUL; mb_ptr_adv(p))
+		    for (p = items[2]; *p != NUL; MB_PTR_ADV(p))
 			if (*p == '_')
 			    *p = ' ';
 		    add_fromto(spin, items[0][3] == 'S'
@@ -3624,7 +3624,7 @@
 	/* Truncate the word at the "/", set "afflist" to what follows.
 	 * Replace "\/" by "/" and "\\" by "\". */
 	afflist = NULL;
-	for (p = w; *p != NUL; mb_ptr_adv(p))
+	for (p = w; *p != NUL; MB_PTR_ADV(p))
 	{
 	    if (*p == '\\' && (p[1] == '\\' || p[1] == '/'))
 		STRMOVE(p, p + 1);
@@ -3947,7 +3947,7 @@
 				{
 				    i = mb_charlen(ae->ae_chop);
 				    for ( ; i > 0; --i)
-					mb_ptr_adv(p);
+					MB_PTR_ADV(p);
 				}
 				else
 #endif
@@ -3965,7 +3965,7 @@
 				p = newword + STRLEN(newword);
 				i = (int)MB_CHARLEN(ae->ae_chop);
 				for ( ; i > 0; --i)
-				    mb_ptr_back(newword, p);
+				    MB_PTR_BACK(newword, p);
 				*p = NUL;
 			    }
 			    if (ae->ae_add != NULL)
