summaryrefslogtreecommitdiffstats
path: root/package/readline/readline52-006.patch
diff options
context:
space:
mode:
authorLionel Landwerlin <llandwerlin@gmail.com>2010-01-27 02:08:58 +0100
committerPeter Korsgaard <jacmet@sunsite.dk>2010-01-28 22:31:27 +0100
commitfe6e67ba96b7fedf91faac7992813f7233a5e58b (patch)
tree46fe50138f19ff53e56245f5081ef07e2de6a309 /package/readline/readline52-006.patch
parent5ad8ad0c3729ccf7012f414969304950fb58c456 (diff)
downloadbuildroot-novena-fe6e67ba96b7fedf91faac7992813f7233a5e58b.tar.gz
buildroot-novena-fe6e67ba96b7fedf91faac7992813f7233a5e58b.zip
readline: convert to autotools infrastructure
[Peter: renamed patches to get picked up by infrastructure] Signed-off-by: Lionel Landwerlin <llandwerlin@gmail.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'package/readline/readline52-006.patch')
-rw-r--r--package/readline/readline52-006.patch62
1 files changed, 62 insertions, 0 deletions
diff --git a/package/readline/readline52-006.patch b/package/readline/readline52-006.patch
new file mode 100644
index 000000000..fbd06cb23
--- /dev/null
+++ b/package/readline/readline52-006.patch
@@ -0,0 +1,62 @@
+ READLINE PATCH REPORT
+ =====================
+
+Readline-Release: 5.2
+Patch-ID: readline52-006
+
+Bug-Reported-by: Peter Volkov <torre_cremata@mail.ru>
+Bug-Reference-ID: <1178376645.9063.25.camel@localhost>
+Bug-Reference-URL: http://bugs.gentoo.org/177095
+
+Bug-Description:
+
+The readline display code miscalculated the screen position when performing
+a redisplay in which the new text occupies more screen space that the old,
+but takes fewer bytes to do so (e.g., when replacing a shorter string
+containing multibyte characters with a longer one containing only ASCII).
+
+Patch:
+
+*** ../readline-5.2/display.c Thu Apr 26 11:38:22 2007
+--- ./display.c Thu Jul 12 23:10:10 2007
+***************
+*** 1519,1527 ****
+ /* Non-zero if we're increasing the number of lines. */
+ int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
+ /* Sometimes it is cheaper to print the characters rather than
+ use the terminal's capabilities. If we're growing the number
+ of lines, make sure we actually cause the new line to wrap
+ around on auto-wrapping terminals. */
+! if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
+ {
+ /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and
+--- 1568,1596 ----
+ /* Non-zero if we're increasing the number of lines. */
+ int gl = current_line >= _rl_vis_botlin && inv_botlin > _rl_vis_botlin;
++ /* If col_lendiff is > 0, implying that the new string takes up more
++ screen real estate than the old, but lendiff is < 0, meaning that it
++ takes fewer bytes, we need to just output the characters starting
++ from the first difference. These will overwrite what is on the
++ display, so there's no reason to do a smart update. This can really
++ only happen in a multibyte environment. */
++ if (lendiff < 0)
++ {
++ _rl_output_some_chars (nfd, temp);
++ _rl_last_c_pos += _rl_col_width (nfd, 0, temp);
++ /* If nfd begins before any invisible characters in the prompt,
++ adjust _rl_last_c_pos to account for wrap_offset and set
++ cpos_adjusted to let the caller know. */
++ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
++ {
++ _rl_last_c_pos -= wrap_offset;
++ cpos_adjusted = 1;
++ }
++ return;
++ }
+ /* Sometimes it is cheaper to print the characters rather than
+ use the terminal's capabilities. If we're growing the number
+ of lines, make sure we actually cause the new line to wrap
+ around on auto-wrapping terminals. */
+! else if (_rl_terminal_can_insert && ((2 * col_temp) >= col_lendiff || _rl_term_IC) && (!_rl_term_autowrap || !gl))
+ {
+ /* If lendiff > prompt_visible_length and _rl_last_c_pos == 0 and