From: Serhiy Storchaka Date: Sun, 27 Sep 2015 19:34:59 +0000 (+0300) Subject: Issue #25203: Failed readline.set_completer_delims() no longer left the X-Git-Tag: v2.7.11rc1~105 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a8041ae56532863957cb07812e2a523cab6dbce3;p=thirdparty%2FPython%2Fcpython.git Issue #25203: Failed readline.set_completer_delims() no longer left the module in inconsistent state. --- diff --git a/Misc/NEWS b/Misc/NEWS index 83c50e359db8..901b9cd55f28 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -37,6 +37,9 @@ Core and Builtins Library ------- +- Issue #25203: Failed readline.set_completer_delims() no longer left the + module in inconsistent state. + - Issue #19143: platform module now reads Windows version from kernel32.dll to avoid compatibility shims. diff --git a/Modules/readline.c b/Modules/readline.c index 244d2608e7b8..1e98ffb9c22d 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -355,10 +355,11 @@ set_completer_delims(PyObject *self, PyObject *args) /* Keep a reference to the allocated memory in the module state in case some other module modifies rl_completer_word_break_characters (see issue #17289). */ - free(completer_word_break_characters); - completer_word_break_characters = strdup(break_chars); - if (completer_word_break_characters) { - rl_completer_word_break_characters = completer_word_break_characters; + break_chars = strdup(break_chars); + if (break_chars) { + free(completer_word_break_characters); + completer_word_break_characters = break_chars; + rl_completer_word_break_characters = break_chars; Py_RETURN_NONE; } else