Skip to content

Commit

Permalink
patch 8.0.0102
Browse files Browse the repository at this point in the history
Problem:    Cannot set 'dictionary' to a path.
Solution:   Allow for slash and backslash.  Add a test (partly by Daisuke
            Suzuki, closes #1279, closes #1284)
  • Loading branch information
brammool committed Nov 25, 2016
1 parent 031cb74 commit 7554da4
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 6 deletions.
15 changes: 9 additions & 6 deletions src/option.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -452,10 +452,11 @@ struct vimoption
#define P_NFNAME 0x400000L /* only normal file name chars allowed */ #define P_NFNAME 0x400000L /* only normal file name chars allowed */
#define P_INSECURE 0x800000L /* option was set from a modeline */ #define P_INSECURE 0x800000L /* option was set from a modeline */
#define P_PRI_MKRC 0x1000000L /* priority for :mkvimrc (setting option has #define P_PRI_MKRC 0x1000000L /* priority for :mkvimrc (setting option has
side effects) */ side effects) */
#define P_NO_ML 0x2000000L /* not allowed in modeline */ #define P_NO_ML 0x2000000L /* not allowed in modeline */
#define P_CURSWANT 0x4000000L /* update curswant required; not needed when #define P_CURSWANT 0x4000000L /* update curswant required; not needed when
* there is a redraw flag */ * there is a redraw flag */
#define P_NDNAME 0x8000000L /* only normal dir name chars allowed */


#define ISK_LATIN1 (char_u *)"@,48-57,_,192-255" #define ISK_LATIN1 (char_u *)"@,48-57,_,192-255"


Expand Down Expand Up @@ -992,7 +993,7 @@ static struct vimoption options[] =
(char_u *)NULL, PV_NONE, (char_u *)NULL, PV_NONE,
#endif #endif
{(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT}, {(char_u *)FALSE, (char_u *)0L} SCRIPTID_INIT},
{"dictionary", "dict", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP|P_NFNAME, {"dictionary", "dict", P_STRING|P_EXPAND|P_VI_DEF|P_ONECOMMA|P_NODUP|P_NDNAME,
#ifdef FEAT_INS_EXPAND #ifdef FEAT_INS_EXPAND
(char_u *)&p_dict, PV_DICT, (char_u *)&p_dict, PV_DICT,
#else #else
Expand Down Expand Up @@ -5876,11 +5877,13 @@ did_set_string_option(
errmsg = e_secure; errmsg = e_secure;
} }


/* Check for a "normal" file name in some options. Disallow a path /* Check for a "normal" directory or file name in some options. Disallow a
* separator (slash and/or backslash), wildcards and characters that are * path separator (slash and/or backslash), wildcards and characters that
* often illegal in a file name. */ * are often illegal in a file name. */
else if ((options[opt_idx].flags & P_NFNAME) else if (((options[opt_idx].flags & P_NFNAME)
&& vim_strpbrk(*varp, (char_u *)"/\\*?[|;&<>\r\n") != NULL) && vim_strpbrk(*varp, (char_u *)"/\\*?[|;&<>\r\n") != NULL)
|| ((options[opt_idx].flags & P_NDNAME)
&& vim_strpbrk(*varp, (char_u *)"*?[|;&<>\r\n") != NULL))
{ {
errmsg = e_invarg; errmsg = e_invarg;
} }
Expand Down
15 changes: 15 additions & 0 deletions src/testdir/test_options.vim
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -106,3 +106,18 @@ func Test_keymap_valid()
call assert_fails(":set kmp=trunc\x00name", "E544:") call assert_fails(":set kmp=trunc\x00name", "E544:")
call assert_fails(":set kmp=trunc\x00name", "trunc") call assert_fails(":set kmp=trunc\x00name", "trunc")
endfunc endfunc

func Test_dictionary()
" Check that it's possible to set the option.
set dictionary=/usr/share/dict/words
call assert_equal('/usr/share/dict/words', &dictionary)
set dictionary=/usr/share/dict/words,/and/there
call assert_equal('/usr/share/dict/words,/and/there', &dictionary)
set dictionary=/usr/share/dict\ words
call assert_equal('/usr/share/dict words', &dictionary)

" Check rejecting weird characters.
call assert_fails("set dictionary=/not&there", "E474:")
call assert_fails("set dictionary=/not>there", "E474:")
call assert_fails("set dictionary=/not.*there", "E474:")
endfunc
2 changes: 2 additions & 0 deletions src/version.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -764,6 +764,8 @@ static char *(features[]) =


static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
102,
/**/ /**/
101, 101,
/**/ /**/
Expand Down

0 comments on commit 7554da4

Please sign in to comment.