123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- BASH PATCH REPORT
- =================
- Bash-Release: 4.2
- Patch-ID: bash42-037
- Bug-Reported-by: Jakub Filak
- Bug-Reference-ID:
- Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=813289
- Bug-Description:
- Attempting to redo (using `.') the vi editing mode `cc', `dd', or `yy'
- commands leads to an infinite loop.
- Patch (apply with `patch -p0'):
- *** ../bash-4.2-patched/lib/readline/vi_mode.c 2011-02-25 11:17:02.000000000 -0500
- --- ./lib/readline/vi_mode.c 2012-06-02 12:24:47.000000000 -0400
- ***************
- *** 1235,1243 ****
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- ! else if (vi_redoing)
- {
- _rl_vimvcxt->motion = _rl_vi_last_motion;
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- #if defined (READLINE_CALLBACKS)
- else if (RL_ISSTATE (RL_STATE_CALLBACK))
- --- 1297,1313 ----
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- ! else if (vi_redoing && _rl_vi_last_motion != 'd') /* `dd' is special */
- {
- _rl_vimvcxt->motion = _rl_vi_last_motion;
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- + else if (vi_redoing) /* handle redoing `dd' here */
- + {
- + _rl_vimvcxt->motion = _rl_vi_last_motion;
- + rl_mark = rl_end;
- + rl_beg_of_line (1, key);
- + RL_UNSETSTATE (RL_STATE_VIMOTION);
- + r = vidomove_dispatch (_rl_vimvcxt);
- + }
- #if defined (READLINE_CALLBACKS)
- else if (RL_ISSTATE (RL_STATE_CALLBACK))
- ***************
- *** 1317,1325 ****
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- ! else if (vi_redoing)
- {
- _rl_vimvcxt->motion = _rl_vi_last_motion;
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- #if defined (READLINE_CALLBACKS)
- else if (RL_ISSTATE (RL_STATE_CALLBACK))
- --- 1387,1403 ----
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- ! else if (vi_redoing && _rl_vi_last_motion != 'c') /* `cc' is special */
- {
- _rl_vimvcxt->motion = _rl_vi_last_motion;
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- + else if (vi_redoing) /* handle redoing `cc' here */
- + {
- + _rl_vimvcxt->motion = _rl_vi_last_motion;
- + rl_mark = rl_end;
- + rl_beg_of_line (1, key);
- + RL_UNSETSTATE (RL_STATE_VIMOTION);
- + r = vidomove_dispatch (_rl_vimvcxt);
- + }
- #if defined (READLINE_CALLBACKS)
- else if (RL_ISSTATE (RL_STATE_CALLBACK))
- ***************
- *** 1378,1381 ****
- --- 1456,1472 ----
- r = rl_domove_motion_callback (_rl_vimvcxt);
- }
- + else if (vi_redoing && _rl_vi_last_motion != 'y') /* `yy' is special */
- + {
- + _rl_vimvcxt->motion = _rl_vi_last_motion;
- + r = rl_domove_motion_callback (_rl_vimvcxt);
- + }
- + else if (vi_redoing) /* handle redoing `yy' here */
- + {
- + _rl_vimvcxt->motion = _rl_vi_last_motion;
- + rl_mark = rl_end;
- + rl_beg_of_line (1, key);
- + RL_UNSETSTATE (RL_STATE_VIMOTION);
- + r = vidomove_dispatch (_rl_vimvcxt);
- + }
- #if defined (READLINE_CALLBACKS)
- else if (RL_ISSTATE (RL_STATE_CALLBACK))
- *** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010
- --- ./patchlevel.h Thu Feb 24 21:41:34 2011
- ***************
- *** 26,30 ****
- looks for to find the patch level (for the sccs version string). */
-
- ! #define PATCHLEVEL 36
-
- #endif /* _PATCHLEVEL_H_ */
- --- 26,30 ----
- looks for to find the patch level (for the sccs version string). */
-
- ! #define PATCHLEVEL 37
-
- #endif /* _PATCHLEVEL_H_ */
|