1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
To: vim-dev@vim.org
Subject: Patch 7.2.225
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------
Patch 7.2.225
Problem: When using ":normal" a saved character may be executed.
Solution: Also store old_char when saving typeahead.
Files: src/getchar.c, src/structs.h
*** ../vim-7.2.224/src/getchar.c 2009-02-22 23:42:08.000000000 +0100
--- src/getchar.c 2009-07-09 18:09:13.000000000 +0200
***************
*** 1309,1314 ****
--- 1309,1317 ----
return OK;
}
+ static int old_char = -1; /* character put back by vungetc() */
+ static int old_mod_mask; /* mod_mask for ungotten character */
+
#if defined(FEAT_EVAL) || defined(FEAT_EX_EXTRA) || defined(PROTO)
/*
***************
*** 1323,1328 ****
--- 1326,1335 ----
if (!tp->typebuf_valid)
typebuf = tp->save_typebuf;
+ tp->old_char = old_char;
+ tp->old_mod_mask = old_mod_mask;
+ old_char = -1;
+
tp->save_stuffbuff = stuffbuff;
stuffbuff.bh_first.b_next = NULL;
# ifdef USE_INPUT_BUF
***************
*** 1344,1349 ****
--- 1351,1359 ----
typebuf = tp->save_typebuf;
}
+ old_char = tp->old_char;
+ old_mod_mask = tp->old_mod_mask;
+
free_buff(&stuffbuff);
stuffbuff = tp->save_stuffbuff;
# ifdef USE_INPUT_BUF
***************
*** 1499,1507 ****
#define KL_PART_KEY -1 /* keylen value for incomplete key-code */
#define KL_PART_MAP -2 /* keylen value for incomplete mapping */
- static int old_char = -1; /* character put back by vungetc() */
- static int old_mod_mask; /* mod_mask for ungotten character */
-
/*
* Get the next input character.
* Can return a special key or a multi-byte character.
--- 1509,1514 ----
*** ../vim-7.2.224/src/structs.h 2009-06-16 16:01:34.000000000 +0200
--- src/structs.h 2009-07-09 18:09:20.000000000 +0200
***************
*** 882,887 ****
--- 882,889 ----
{
typebuf_T save_typebuf;
int typebuf_valid; /* TRUE when save_typebuf valid */
+ int old_char;
+ int old_mod_mask;
struct buffheader save_stuffbuff;
#ifdef USE_INPUT_BUF
char_u *save_inputbuf;
*** ../vim-7.2.224/src/version.c 2009-07-09 18:15:19.000000000 +0200
--- src/version.c 2009-07-09 18:21:56.000000000 +0200
***************
*** 678,679 ****
--- 678,681 ----
{ /* Add new patch number below this line */
+ /**/
+ 225,
/**/
--
hundred-and-one symptoms of being an internet addict:
78. You find yourself dialing IP numbers on the phone.
/// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ download, build and distribute -- http://www.A-A-P.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
|