From 3b5330ef2d9b6c19ac18e7630059d90e4f5ab991 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 4 Dec 1998 15:34:39 +0000 Subject: Bernard Herzog pointed out that rl_parse_and_bind modifies its argument string (bad function!), so we make a temporary copy. --- Modules/readline.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Modules/readline.c b/Modules/readline.c index 899a223..915cc4a 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -48,10 +48,17 @@ parse_and_bind(self, args) PyObject *self; PyObject *args; { - char *s; + char *s, *copy; if (!PyArg_ParseTuple(args, "s", &s)) return NULL; - rl_parse_and_bind(s); + /* Make a copy -- rl_parse_and_bind() modifies its argument */ + /* Bernard Herzog */ + copy = malloc(1 + strlen(s)); + if (copy == NULL) + return PyErr_NoMemory(); + strcpy(copy, s); + rl_parse_and_bind(copy); + free(copy); /* Free the copy */ Py_INCREF(Py_None); return Py_None; } -- cgit v0.12