From: Martin Panter Date: Sat, 27 Aug 2016 02:54:43 +0000 (+0000) Subject: Issue #19884: Avoid spurious output on OS X with Gnu Readline X-Git-Tag: v2.7.13rc1~194 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=eac40fdf723bb9af0026305c8ae6cd285fe38c50;p=python Issue #19884: Avoid spurious output on OS X with Gnu Readline Also adjust the test condition, because enable-meta-key was only added in 6.1, not 6.0. --- diff --git a/Lib/test/test_readline.py b/Lib/test/test_readline.py index 588043ee5e..4c400eff95 100644 --- a/Lib/test/test_readline.py +++ b/Lib/test/test_readline.py @@ -44,7 +44,7 @@ class TestHistoryManipulation (unittest.TestCase): class TestReadline(unittest.TestCase): - @unittest.skipIf(readline._READLINE_VERSION < 0x0600 + @unittest.skipIf(readline._READLINE_VERSION < 0x0601 and "libedit" not in readline.__doc__, "not supported in this library version") def test_init(self): diff --git a/Misc/NEWS b/Misc/NEWS index 7f5f66a4ea..e19cab42e5 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -33,6 +33,8 @@ Core and Builtins Library ------- +- Issue #19884: Avoid spurious output on OS X with Gnu Readline. + - Issue #10513: Fix a regression in Connection.commit(). Statements should not be reset after a commit. diff --git a/Modules/readline.c b/Modules/readline.c index 6091a686b1..ad5903cfb5 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -961,19 +961,22 @@ setup_readline(void) begidx = PyInt_FromLong(0L); endidx = PyInt_FromLong(0L); -#ifndef __APPLE__ - if (!isatty(STDOUT_FILENO)) { - /* Issue #19884: stdout is not a terminal. Disable meta modifier - keys to not write the ANSI sequence "\033[1034h" into stdout. On - terminals supporting 8 bit characters like TERM=xterm-256color - (which is now the default Fedora since Fedora 18), the meta key is - used to enable support of 8 bit characters (ANSI sequence - "\033[1034h"). - - With libedit, this call makes readline() crash. */ - rl_variable_bind ("enable-meta-key", "off"); - } +#ifdef __APPLE__ + if (!using_libedit_emulation) #endif + { + if (!isatty(STDOUT_FILENO)) { + /* Issue #19884: stdout is not a terminal. Disable meta modifier + keys to not write the ANSI sequence "\033[1034h" into stdout. On + terminals supporting 8 bit characters like TERM=xterm-256color + (which is now the default Fedora since Fedora 18), the meta key is + used to enable support of 8 bit characters (ANSI sequence + "\033[1034h"). + + With libedit, this call makes readline() crash. */ + rl_variable_bind ("enable-meta-key", "off"); + } + } /* Initialize (allows .inputrc to override) *