From: Bram Moolenaar Date: Thu, 7 Jan 2021 18:36:30 +0000 (+0100) Subject: patch 8.2.2309: 0o777 not recognized as octal X-Git-Tag: v8.2.2309 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=c37b655443e0a11a77a9f0707e3259ab4b8b3dda;p=thirdparty%2Fvim.git patch 8.2.2309: 0o777 not recognized as octal Problem: 0o777 not recognized as octal. Solution: Use vim_isodigit(). (Ken Takata, closes #7633, closes #7631) --- diff --git a/src/charset.c b/src/charset.c index bf5af37205..4289360e47 100644 --- a/src/charset.c +++ b/src/charset.c @@ -1594,6 +1594,12 @@ vim_isbdigit(int c) return (c == '0' || c == '1'); } + static int +vim_isodigit(int c) +{ + return (c >= '0' && c <= '7'); +} + /* * Vim's own character class functions. These exist because many library * islower()/toupper() etc. do not work properly: they crash when used with @@ -1831,7 +1837,7 @@ vim_str2nr( // binary ptr += 2; else if ((what & STR2NR_OOCT) - && (pre == 'O' || pre == 'o') && vim_isbdigit(ptr[2]) + && (pre == 'O' || pre == 'o') && vim_isodigit(ptr[2]) && (maxlen == 0 || maxlen > 2)) // octal with prefix "0o" ptr += 2; diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim index 316fb42f22..e5f521c85c 100644 --- a/src/testdir/test_eval_stuff.vim +++ b/src/testdir/test_eval_stuff.vim @@ -218,6 +218,7 @@ func Test_vvar_scriptversion4() call assert_equal(15, 0o17) call assert_equal(15, 0O17) call assert_equal(18, 018) + call assert_equal(511, 0o777) call assert_equal(64, 0b1'00'00'00) call assert_equal(1048576, 0x10'00'00) call assert_equal(32768, 0o10'00'00) @@ -233,6 +234,7 @@ func Test_vvar_scriptversion1() call assert_equal(15, 0o17) call assert_equal(15, 0O17) call assert_equal(18, 018) + call assert_equal(511, 0o777) endfunc func Test_scriptversion_fail() diff --git a/src/version.c b/src/version.c index f39a0d3618..f4a1d58c81 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2309, /**/ 2308, /**/