diff --git a/src/beval.c b/src/beval.c
index 69e667d..8ef8e8e 100644
--- a/src/beval.c
+++ b/src/beval.c
@@ -92,7 +92,7 @@
 			lbuf = ml_get_buf(curwin->w_buffer, VIsual.lnum, FALSE);
 			len = epos->col - spos->col;
 			if (*p_sel != 'e')
-			    len += MB_PTR2LEN(lbuf + epos->col);
+			    len += mb_ptr2len(lbuf + epos->col);
 			lbuf = vim_strnsave(lbuf + spos->col, len);
 			lnum = spos->lnum;
 			col = spos->col;
diff --git a/src/diff.c b/src/diff.c
index 01125aa..ece7bf5 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -744,7 +744,7 @@
 		// xdiff doesn't support ignoring case, fold-case the text.
 		c = PTR2CHAR(s);
 		c = enc_utf8 ? utf_fold(c) : MB_TOLOWER(c);
-		orig_len = MB_PTR2LEN(s);
+		orig_len = mb_ptr2len(s);
 		if (mb_char2bytes(c, cbuf) != orig_len)
 		    // TODO: handle byte length difference
 		    mch_memmove(ptr + len, s, orig_len);
diff --git a/src/eval.c b/src/eval.c
index 954e07f..0fe8fd3 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -6446,7 +6446,7 @@
 		if (zero_width == regmatch.startp[0])
 		{
 		    /* avoid getting stuck on a match with an empty string */
-		    i = MB_PTR2LEN(tail);
+		    i = mb_ptr2len(tail);
 		    mch_memmove((char_u *)ga.ga_data + ga.ga_len, tail,
 								   (size_t)i);
 		    ga.ga_len += i;
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 26d8691..4a04696 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -6454,7 +6454,7 @@
 	    }
 	    else
 		set_last_csearch(PTR2CHAR(csearch),
-						csearch, MB_PTR2LEN(csearch));
+						csearch, mb_ptr2len(csearch));
 	}
 
 	di = dict_find(d, (char_u *)"forward", -1);
diff --git a/src/ex_getln.c b/src/ex_getln.c
index ef87413..838bd84 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -2781,7 +2781,7 @@
 		    }
 		    else
 		    {
-			len = MB_PTR2LEN(p);
+			len = mb_ptr2len(p);
 			msg_outtrans_len(p, len);
 			vcol += ptr2cells(p);
 			p += len;
diff --git a/src/filepath.c b/src/filepath.c
index 5ffb8c9..3a06eec 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -2613,9 +2613,9 @@
 		&& !(cx == '/' && cy == '\\')
 		&& !(cx == '\\' && cy == '/')))
 	    break;
-	len -= MB_PTR2LEN(px);
-	px += MB_PTR2LEN(px);
-	py += MB_PTR2LEN(py);
+	len -= mb_ptr2len(px);
+	px += mb_ptr2len(px);
+	py += mb_ptr2len(py);
     }
     if (len == 0)
 	return 0;
@@ -3769,14 +3769,14 @@
 		    : c1 - c2;  // no match
 	}
 
-	i += MB_PTR2LEN((char_u *)p + i);
-	j += MB_PTR2LEN((char_u *)q + j);
+	i += mb_ptr2len((char_u *)p + i);
+	j += mb_ptr2len((char_u *)q + j);
     }
     if (s == NULL)	// "i" or "j" ran into "maxlen"
 	return 0;
 
     c1 = PTR2CHAR((char_u *)s + i);
-    c2 = PTR2CHAR((char_u *)s + i + MB_PTR2LEN((char_u *)s + i));
+    c2 = PTR2CHAR((char_u *)s + i + mb_ptr2len((char_u *)s + i));
     // ignore a trailing slash, but not "//" or ":/"
     if (c2 == NUL
 	    && i > 0
diff --git a/src/findfile.c b/src/findfile.c
index 414dc4e..ddb4d10 100644
--- a/src/findfile.c
+++ b/src/findfile.c
@@ -1337,8 +1337,8 @@
 	prev2 = prev1;
 	prev1 = c1;
 
-	i += MB_PTR2LEN(s1 + i);
-	j += MB_PTR2LEN(s2 + j);
+	i += mb_ptr2len(s1 + i);
+	j += mb_ptr2len(s2 + j);
     }
     return s1[i] == s2[j];
 }
diff --git a/src/getchar.c b/src/getchar.c
index 5e098df..85cedde 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2254,7 +2254,7 @@
 		    char_u *p2 = mb_unescape(&p1);
 
 		    if (has_mbyte && p2 != NULL
-					&& MB_BYTE2LEN(tb_c1) > MB_PTR2LEN(p2))
+					&& MB_BYTE2LEN(tb_c1) > mb_ptr2len(p2))
 			mlen = 0;
 		}
 
diff --git a/src/highlight.c b/src/highlight.c
index 725affc..0fdd93a 100644
--- a/src/highlight.c
+++ b/src/highlight.c
@@ -4392,7 +4392,7 @@
 		    && col >= shl->startcol
 		    && col < shl->endcol)
 	    {
-		int next_col = col + MB_PTR2LEN(*line + col);
+		int next_col = col + mb_ptr2len(*line + col);
 
 		if (shl->endcol < next_col)
 		    shl->endcol = next_col;
diff --git a/src/macros.h b/src/macros.h
index 5e047c8..f670046 100644
--- a/src/macros.h
+++ b/src/macros.h
@@ -229,12 +229,10 @@
  * MB_COPY_CHAR(f, t): copy one char from "f" to "t" and advance the pointers.
  * PTR2CHAR(): get character from pointer.
  */
-/* Get the length of the character p points to, including composing chars */
-#define MB_PTR2LEN(p)	    (has_mbyte ? (*mb_ptr2len)(p) : (*p == NUL ? 0 : 1))
 /* Advance multi-byte pointer, skip over composing chars. */
-#define MB_PTR_ADV(p)	    p += has_mbyte ? (*mb_ptr2len)(p) : (*p == NUL ? 0 : 1)
+#define MB_PTR_ADV(p)	    p += (*mb_ptr2len)(p)
 /* Advance multi-byte pointer, do not skip over composing chars. */
-#define MB_CPTR_ADV(p)	    p += enc_utf8 ? utf_ptr2len(p) : has_mbyte ? (*mb_ptr2len)(p) : (*p == NUL ? 0 : 1)
+#define MB_CPTR_ADV(p)	    p += enc_utf8 ? utf_ptr2len(p) : (*mb_ptr2len)(p)
 /* Backup multi-byte pointer. Only use with "p" > "s" ! */
 #define MB_PTR_BACK(s, p)  p -= has_mbyte ? ((*mb_head_off)(s, p - 1) + 1) : 1
 /* get length of multi-byte char, not including composing chars */
diff --git a/src/ops.c b/src/ops.c
index e82a66b..aa68584 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -3223,7 +3223,7 @@
 	    while (ptr[col] != NUL
 		    && !vim_isdigit(ptr[col])
 		    && !(doalp && ASCII_ISALPHA(ptr[col])))
-		col += MB_PTR2LEN(ptr + col);
+		col += mb_ptr2len(ptr + col);
 
 	    while (col > 0
 		    && vim_isdigit(ptr[col - 1])
@@ -3242,7 +3242,7 @@
 		&& !vim_isdigit(ptr[col])
 		&& !(doalp && ASCII_ISALPHA(ptr[col])))
 	{
-	    int mb_len = MB_PTR2LEN(ptr + col);
+	    int mb_len = mb_ptr2len(ptr + col);
 
 	    col += mb_len;
 	    length -= mb_len;
diff --git a/src/os_mswin.c b/src/os_mswin.c
index 5fb4809..b5ef8fc 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -1654,7 +1654,7 @@
     /* This is wrong when printing spaces for a TAB. */
     if (p[len] != NUL)
     {
-	wlen = MB_PTR2LEN(p + len);
+	wlen = mb_ptr2len(p + len);
 	wp = enc_to_utf16(p + len, &wlen);
 	if (wp != NULL)
 	{
diff --git a/src/popupmenu.c b/src/popupmenu.c
index 846dbc2..b88c653 100644
--- a/src/popupmenu.c
+++ b/src/popupmenu.c
@@ -1151,7 +1151,7 @@
 		}
 	    }
 	    item->cells += ptr2cells(p);
-	    p += MB_PTR2LEN(p);
+	    p += mb_ptr2len(p);
 	}
 	item->bytelen = p - item->start;
 	if (item->cells > max_cells)
@@ -1195,7 +1195,7 @@
 	    {
 		cells = item->indent * 2;
 		for (p = item->start + skip; p < item->start + item->bytelen;
-							    p += MB_PTR2LEN(p))
+							    p += mb_ptr2len(p))
 		    if ((cells += ptr2cells(p)) > BALLOON_MIN_WIDTH)
 			break;
 		thislen = p - (item->start + skip);
diff --git a/src/search.c b/src/search.c
index 63171a9..a0ca8df 100644
--- a/src/search.c
+++ b/src/search.c
@@ -2078,7 +2078,7 @@
 		    find_mps_values(&initc, &findc, &backwards, FALSE);
 		    if (findc)
 			break;
-		    pos.col += MB_PTR2LEN(linep + pos.col);
+		    pos.col += mb_ptr2len(linep + pos.col);
 		}
 		if (!findc)
 		{
@@ -2657,14 +2657,14 @@
 	if (PTR2CHAR(p) == c && (curwin->w_p_rl ^ p_ri))
 	    break;
 #endif
-	p += MB_PTR2LEN(p) + 1;
+	p += mb_ptr2len(p) + 1;
 	if (PTR2CHAR(p) == c
 #ifdef FEAT_RIGHTLEFT
 		&& !(curwin->w_p_rl ^ p_ri)
 #endif
 	   )
 	    break;
-	p += MB_PTR2LEN(p);
+	p += mb_ptr2len(p);
 	if (*p == NUL)
 	    return;
     }
@@ -5633,7 +5633,7 @@
 		    && action == ACTION_EXPAND
 		    && !(compl_cont_status & CONT_SOL)
 		    && *startp != NUL
-		    && *(p = startp + MB_PTR2LEN(startp)) != NUL)
+		    && *(p = startp + mb_ptr2len(startp)) != NUL)
 		goto search_line;
 	}
 	line_breakcheck();
diff --git a/src/spell.c b/src/spell.c
index de478a3..607bb39 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -2621,7 +2621,7 @@
 
     if (has_mbyte)
     {
-	l = MB_PTR2LEN(p);
+	l = mb_ptr2len(p);
 	s = p;
 	if (l == 1)
 	{
diff --git a/src/spellsuggest.c b/src/spellsuggest.c
index 41f4a73..a5f8b92 100644
--- a/src/spellsuggest.c
+++ b/src/spellsuggest.c
@@ -1782,7 +1782,7 @@
 			{
 			    int	    l;
 
-			    l = MB_PTR2LEN(fword + sp->ts_fidx);
+			    l = mb_ptr2len(fword + sp->ts_fidx);
 			    if (fword_ends)
 			    {
 				// Copy the skipped character to preword.
@@ -1937,7 +1937,7 @@
 				// Correct ts_fidx for the byte length of the
 				// character (we didn't check that before).
 				sp->ts_fidx = sp->ts_fcharstart
-					    + MB_PTR2LEN(
+					    + mb_ptr2len(
 						    fword + sp->ts_fcharstart);
 				// For changing a composing character adjust
 				// the score from SCORE_SUBST to
@@ -2053,7 +2053,7 @@
 		if (has_mbyte)
 		{
 		    c = mb_ptr2char(fword + sp->ts_fidx);
-		    stack[depth].ts_fidx += MB_PTR2LEN(fword + sp->ts_fidx);
+		    stack[depth].ts_fidx += mb_ptr2len(fword + sp->ts_fidx);
 		    if (enc_utf8 && utf_iscomposing(c))
 			stack[depth].ts_score -= SCORE_DEL - SCORE_DELCOMP;
 		    else if (c == mb_ptr2char(fword + stack[depth].ts_fidx))
@@ -2266,9 +2266,9 @@
 	    p = fword + sp->ts_fidx;
 	    if (has_mbyte)
 	    {
-		n = MB_PTR2LEN(p);
+		n = mb_ptr2len(p);
 		c = mb_ptr2char(p + n);
-		mch_memmove(p + MB_PTR2LEN(p + n), p, n);
+		mch_memmove(p + mb_ptr2len(p + n), p, n);
 		mb_char2bytes(c, p);
 	    }
 	    else
@@ -2354,11 +2354,11 @@
 	    p = fword + sp->ts_fidx;
 	    if (has_mbyte)
 	    {
-		n = MB_PTR2LEN(p);
+		n = mb_ptr2len(p);
 		c2 = mb_ptr2char(p + n);
-		fl = MB_PTR2LEN(p + n);
+		fl = mb_ptr2len(p + n);
 		c = mb_ptr2char(p + n + fl);
-		tl = MB_PTR2LEN(p + n + fl);
+		tl = mb_ptr2len(p + n + fl);
 		mch_memmove(p + fl + tl, p, n);
 		mb_char2bytes(c, p);
 		mb_char2bytes(c2, p + tl);
@@ -2427,10 +2427,10 @@
 	    p = fword + sp->ts_fidx;
 	    if (has_mbyte)
 	    {
-		n = MB_PTR2LEN(p);
-		n += MB_PTR2LEN(p + n);
+		n = mb_ptr2len(p);
+		n += mb_ptr2len(p + n);
 		c = mb_ptr2char(p + n);
-		tl = MB_PTR2LEN(p + n);
+		tl = mb_ptr2len(p + n);
 		mch_memmove(p + tl, p, n);
 		mb_char2bytes(c, p);
 	    }
@@ -2489,9 +2489,9 @@
 	    if (has_mbyte)
 	    {
 		c = mb_ptr2char(p);
-		tl = MB_PTR2LEN(p);
-		n = MB_PTR2LEN(p + tl);
-		n += MB_PTR2LEN(p + tl + n);
+		tl = mb_ptr2len(p);
+		n = mb_ptr2len(p + tl);
+		n += mb_ptr2len(p + tl + n);
 		mch_memmove(p, p + tl, n);
 		mb_char2bytes(c, p + n);
 	    }
diff --git a/src/terminal.c b/src/terminal.c
index 52487a3..42a80cd 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -5431,7 +5431,7 @@
 	    attrs = cellattr->attrs;
 	    fg = cellattr->fg;
 	    bg = cellattr->bg;
-	    len = MB_PTR2LEN(p);
+	    len = mb_ptr2len(p);
 	    mch_memmove(mbs, p, len);
 	    mbs[len] = NUL;
 	    p += len;
diff --git a/src/version.c b/src/version.c
index edbd0a7..f668b97 100644
--- a/src/version.c
+++ b/src/version.c
@@ -754,6 +754,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2120,
+/**/
     2119,
 /**/
     2118,
