comparison src/charset.c @ 10720:44a1661f4cfa v8.0.0250

patch 8.0.0250: virtcol() does not work well for multi-byte characters commit https://github.com/vim/vim/commit/0c0590d9827cb07a33c1552cb3558b94bddcb4dc Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jan 28 13:48:10 2017 +0100 patch 8.0.0250: virtcol() does not work well for multi-byte characters Problem: When virtcol() gets a column that is not the first byte of a multi-byte character the result is unpredictable. (Christian Ludwig) Solution: Correct the column to the first byte of a multi-byte character. Change the utf-8 test to new style.
author Christian Brabandt <cb@256bit.org>
date Sat, 28 Jan 2017 14:00:04 +0100
parents 77d66e9ac0ab
children ae1c6bf22e5f
comparison
equal deleted inserted replaced
10719:85d402f74ef7 10720:44a1661f4cfa
1294 vcol = 0; 1294 vcol = 0;
1295 line = ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE); 1295 line = ptr = ml_get_buf(wp->w_buffer, pos->lnum, FALSE);
1296 if (pos->col == MAXCOL) 1296 if (pos->col == MAXCOL)
1297 posptr = NULL; /* continue until the NUL */ 1297 posptr = NULL; /* continue until the NUL */
1298 else 1298 else
1299 {
1299 posptr = ptr + pos->col; 1300 posptr = ptr + pos->col;
1301 #ifdef FEAT_MBYTE
1302 if (has_mbyte)
1303 /* always start on the first byte */
1304 posptr -= (*mb_head_off)(line, posptr);
1305 #endif
1306 }
1300 1307
1301 /* 1308 /*
1302 * This function is used very often, do some speed optimizations. 1309 * This function is used very often, do some speed optimizations.
1303 * When 'list', 'linebreak', 'showbreak' and 'breakindent' are not set 1310 * When 'list', 'linebreak', 'showbreak' and 'breakindent' are not set
1304 * use a simple loop. 1311 * use a simple loop.