| BASH PATCH REPORT |
| ================= |
| |
| Bash-Release: 4.2 |
| Patch-ID: bash42-031 |
| |
| Bug-Reported-by: Max Horn <max@quendi.de> |
| Bug-Reference-ID: <20CC5C60-07C3-4E41-9817-741E48D407C5@quendi.de> |
| Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2012-06/msg00005.html |
| |
| Bug-Description: |
| |
| A change between bash-4.1 and bash-4.2 to prevent the readline input hook |
| from being called too frequently had the side effect of causing delays |
| when reading pasted input on systems such as Mac OS X. This patch fixes |
| those delays while retaining the bash-4.2 behavior. |
| |
| Patch (apply with `patch -p0'): |
| |
| *** ../bash-4.2-patched/lib/readline/input.c 2010-05-30 18:33:01.000000000 -0400 |
| --- ./lib/readline/input.c 2012-06-25 21:08:42.000000000 -0400 |
| *************** |
| *** 410,414 **** |
| rl_read_key () |
| { |
| ! int c; |
| |
| rl_key_sequence_length++; |
| --- 412,416 ---- |
| rl_read_key () |
| { |
| ! int c, r; |
| |
| rl_key_sequence_length++; |
| *************** |
| *** 430,441 **** |
| while (rl_event_hook) |
| { |
| ! if (rl_gather_tyi () < 0) /* XXX - EIO */ |
| { |
| rl_done = 1; |
| return ('\n'); |
| } |
| RL_CHECK_SIGNALS (); |
| - if (rl_get_char (&c) != 0) |
| - break; |
| if (rl_done) /* XXX - experimental */ |
| return ('\n'); |
| --- 432,447 ---- |
| while (rl_event_hook) |
| { |
| ! if (rl_get_char (&c) != 0) |
| ! break; |
| ! |
| ! if ((r = rl_gather_tyi ()) < 0) /* XXX - EIO */ |
| { |
| rl_done = 1; |
| return ('\n'); |
| } |
| + else if (r == 1) /* read something */ |
| + continue; |
| + |
| RL_CHECK_SIGNALS (); |
| if (rl_done) /* XXX - experimental */ |
| return ('\n'); |
| *** ../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 30 |
| |
| #endif /* _PATCHLEVEL_H_ */ |
| --- 26,30 ---- |
| looks for to find the patch level (for the sccs version string). */ |
| |
| ! #define PATCHLEVEL 31 |
| |
| #endif /* _PATCHLEVEL_H_ */ |