The patch was taken from CPython 3.3.5pull/152/head
@ -0,0 +1,70 @@ | |||
diff -r -u ../Python-3.3.3.orig/Modules/readline.c ./Modules/readline.c | |||
--- ../Python-3.3.3.orig/Modules/readline.c 2013-11-17 16:23:01.000000000 +0900 | |||
+++ ./Modules/readline.c 2014-03-29 16:22:10.219305878 +0900 | |||
@@ -231,8 +231,7 @@ | |||
if (!PyArg_ParseTuple(args, buf, &function)) | |||
return NULL; | |||
if (function == Py_None) { | |||
- Py_XDECREF(*hook_var); | |||
- *hook_var = NULL; | |||
+ Py_CLEAR(*hook_var); | |||
} | |||
else if (PyCallable_Check(function)) { | |||
PyObject *tmp = *hook_var; | |||
@@ -774,14 +773,22 @@ | |||
} | |||
static int | |||
+#if defined(_RL_FUNCTION_TYPEDEF) | |||
on_startup_hook(void) | |||
+#else | |||
+on_startup_hook() | |||
+#endif | |||
{ | |||
return on_hook(startup_hook); | |||
} | |||
#ifdef HAVE_RL_PRE_INPUT_HOOK | |||
static int | |||
+#if defined(_RL_FUNCTION_TYPEDEF) | |||
on_pre_input_hook(void) | |||
+#else | |||
+on_pre_input_hook() | |||
+#endif | |||
{ | |||
return on_hook(pre_input_hook); | |||
} | |||
@@ -819,7 +826,7 @@ | |||
(r != Py_None && PyLong_AsLong(r) == -1 && PyErr_Occurred())) { | |||
goto error; | |||
} | |||
- Py_XDECREF(r); r=NULL; | |||
+ Py_CLEAR(r); | |||
if (0) { | |||
error: | |||
@@ -877,7 +884,7 @@ | |||
* before calling the normal completer */ | |||
static char ** | |||
-flex_complete(char *text, int start, int end) | |||
+flex_complete(const char *text, int start, int end) | |||
{ | |||
#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER | |||
rl_completion_append_character ='\0'; | |||
@@ -936,12 +943,12 @@ | |||
rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap); | |||
rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap); | |||
/* Set our hook functions */ | |||
- rl_startup_hook = (Function *)on_startup_hook; | |||
+ rl_startup_hook = on_startup_hook; | |||
#ifdef HAVE_RL_PRE_INPUT_HOOK | |||
- rl_pre_input_hook = (Function *)on_pre_input_hook; | |||
+ rl_pre_input_hook = on_pre_input_hook; | |||
#endif | |||
/* Set our completion function */ | |||
- rl_attempted_completion_function = (CPPFunction *)flex_complete; | |||
+ rl_attempted_completion_function = flex_complete; | |||
/* Set Python word break characters */ | |||
completer_word_break_characters = | |||
rl_completer_word_break_characters = |
@ -0,0 +1,70 @@ | |||
diff -r -u ../Python-3.3.3.orig/Modules/readline.c ./Modules/readline.c | |||
--- ../Python-3.3.3.orig/Modules/readline.c 2013-11-17 16:23:01.000000000 +0900 | |||
+++ ./Modules/readline.c 2014-03-29 16:22:10.219305878 +0900 | |||
@@ -231,8 +231,7 @@ | |||
if (!PyArg_ParseTuple(args, buf, &function)) | |||
return NULL; | |||
if (function == Py_None) { | |||
- Py_XDECREF(*hook_var); | |||
- *hook_var = NULL; | |||
+ Py_CLEAR(*hook_var); | |||
} | |||
else if (PyCallable_Check(function)) { | |||
PyObject *tmp = *hook_var; | |||
@@ -774,14 +773,22 @@ | |||
} | |||
static int | |||
+#if defined(_RL_FUNCTION_TYPEDEF) | |||
on_startup_hook(void) | |||
+#else | |||
+on_startup_hook() | |||
+#endif | |||
{ | |||
return on_hook(startup_hook); | |||
} | |||
#ifdef HAVE_RL_PRE_INPUT_HOOK | |||
static int | |||
+#if defined(_RL_FUNCTION_TYPEDEF) | |||
on_pre_input_hook(void) | |||
+#else | |||
+on_pre_input_hook() | |||
+#endif | |||
{ | |||
return on_hook(pre_input_hook); | |||
} | |||
@@ -819,7 +826,7 @@ | |||
(r != Py_None && PyLong_AsLong(r) == -1 && PyErr_Occurred())) { | |||
goto error; | |||
} | |||
- Py_XDECREF(r); r=NULL; | |||
+ Py_CLEAR(r); | |||
if (0) { | |||
error: | |||
@@ -877,7 +884,7 @@ | |||
* before calling the normal completer */ | |||
static char ** | |||
-flex_complete(char *text, int start, int end) | |||
+flex_complete(const char *text, int start, int end) | |||
{ | |||
#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER | |||
rl_completion_append_character ='\0'; | |||
@@ -936,12 +943,12 @@ | |||
rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap); | |||
rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap); | |||
/* Set our hook functions */ | |||
- rl_startup_hook = (Function *)on_startup_hook; | |||
+ rl_startup_hook = on_startup_hook; | |||
#ifdef HAVE_RL_PRE_INPUT_HOOK | |||
- rl_pre_input_hook = (Function *)on_pre_input_hook; | |||
+ rl_pre_input_hook = on_pre_input_hook; | |||
#endif | |||
/* Set our completion function */ | |||
- rl_attempted_completion_function = (CPPFunction *)flex_complete; | |||
+ rl_attempted_completion_function = flex_complete; | |||
/* Set Python word break characters */ | |||
completer_word_break_characters = | |||
rl_completer_word_break_characters = |
@ -0,0 +1,70 @@ | |||
diff -r -u ../Python-3.3.3.orig/Modules/readline.c ./Modules/readline.c | |||
--- ../Python-3.3.3.orig/Modules/readline.c 2013-11-17 16:23:01.000000000 +0900 | |||
+++ ./Modules/readline.c 2014-03-29 16:22:10.219305878 +0900 | |||
@@ -231,8 +231,7 @@ | |||
if (!PyArg_ParseTuple(args, buf, &function)) | |||
return NULL; | |||
if (function == Py_None) { | |||
- Py_XDECREF(*hook_var); | |||
- *hook_var = NULL; | |||
+ Py_CLEAR(*hook_var); | |||
} | |||
else if (PyCallable_Check(function)) { | |||
PyObject *tmp = *hook_var; | |||
@@ -774,14 +773,22 @@ | |||
} | |||
static int | |||
+#if defined(_RL_FUNCTION_TYPEDEF) | |||
on_startup_hook(void) | |||
+#else | |||
+on_startup_hook() | |||
+#endif | |||
{ | |||
return on_hook(startup_hook); | |||
} | |||
#ifdef HAVE_RL_PRE_INPUT_HOOK | |||
static int | |||
+#if defined(_RL_FUNCTION_TYPEDEF) | |||
on_pre_input_hook(void) | |||
+#else | |||
+on_pre_input_hook() | |||
+#endif | |||
{ | |||
return on_hook(pre_input_hook); | |||
} | |||
@@ -819,7 +826,7 @@ | |||
(r != Py_None && PyLong_AsLong(r) == -1 && PyErr_Occurred())) { | |||
goto error; | |||
} | |||
- Py_XDECREF(r); r=NULL; | |||
+ Py_CLEAR(r); | |||
if (0) { | |||
error: | |||
@@ -877,7 +884,7 @@ | |||
* before calling the normal completer */ | |||
static char ** | |||
-flex_complete(char *text, int start, int end) | |||
+flex_complete(const char *text, int start, int end) | |||
{ | |||
#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER | |||
rl_completion_append_character ='\0'; | |||
@@ -936,12 +943,12 @@ | |||
rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap); | |||
rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap); | |||
/* Set our hook functions */ | |||
- rl_startup_hook = (Function *)on_startup_hook; | |||
+ rl_startup_hook = on_startup_hook; | |||
#ifdef HAVE_RL_PRE_INPUT_HOOK | |||
- rl_pre_input_hook = (Function *)on_pre_input_hook; | |||
+ rl_pre_input_hook = on_pre_input_hook; | |||
#endif | |||
/* Set our completion function */ | |||
- rl_attempted_completion_function = (CPPFunction *)flex_complete; | |||
+ rl_attempted_completion_function = flex_complete; | |||
/* Set Python word break characters */ | |||
completer_word_break_characters = | |||
rl_completer_word_break_characters = |
@ -0,0 +1,70 @@ | |||
diff -r -u ../Python-3.3.3.orig/Modules/readline.c ./Modules/readline.c | |||
--- ../Python-3.3.3.orig/Modules/readline.c 2013-11-17 16:23:01.000000000 +0900 | |||
+++ ./Modules/readline.c 2014-03-29 16:22:10.219305878 +0900 | |||
@@ -231,8 +231,7 @@ | |||
if (!PyArg_ParseTuple(args, buf, &function)) | |||
return NULL; | |||
if (function == Py_None) { | |||
- Py_XDECREF(*hook_var); | |||
- *hook_var = NULL; | |||
+ Py_CLEAR(*hook_var); | |||
} | |||
else if (PyCallable_Check(function)) { | |||
PyObject *tmp = *hook_var; | |||
@@ -774,14 +773,22 @@ | |||
} | |||
static int | |||
+#if defined(_RL_FUNCTION_TYPEDEF) | |||
on_startup_hook(void) | |||
+#else | |||
+on_startup_hook() | |||
+#endif | |||
{ | |||
return on_hook(startup_hook); | |||
} | |||
#ifdef HAVE_RL_PRE_INPUT_HOOK | |||
static int | |||
+#if defined(_RL_FUNCTION_TYPEDEF) | |||
on_pre_input_hook(void) | |||
+#else | |||
+on_pre_input_hook() | |||
+#endif | |||
{ | |||
return on_hook(pre_input_hook); | |||
} | |||
@@ -819,7 +826,7 @@ | |||
(r != Py_None && PyLong_AsLong(r) == -1 && PyErr_Occurred())) { | |||
goto error; | |||
} | |||
- Py_XDECREF(r); r=NULL; | |||
+ Py_CLEAR(r); | |||
if (0) { | |||
error: | |||
@@ -877,7 +884,7 @@ | |||
* before calling the normal completer */ | |||
static char ** | |||
-flex_complete(char *text, int start, int end) | |||
+flex_complete(const char *text, int start, int end) | |||
{ | |||
#ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER | |||
rl_completion_append_character ='\0'; | |||
@@ -936,12 +943,12 @@ | |||
rl_bind_key_in_map ('\t', rl_complete, emacs_meta_keymap); | |||
rl_bind_key_in_map ('\033', rl_complete, emacs_meta_keymap); | |||
/* Set our hook functions */ | |||
- rl_startup_hook = (Function *)on_startup_hook; | |||
+ rl_startup_hook = on_startup_hook; | |||
#ifdef HAVE_RL_PRE_INPUT_HOOK | |||
- rl_pre_input_hook = (Function *)on_pre_input_hook; | |||
+ rl_pre_input_hook = on_pre_input_hook; | |||
#endif | |||
/* Set our completion function */ | |||
- rl_attempted_completion_function = (CPPFunction *)flex_complete; | |||
+ rl_attempted_completion_function = flex_complete; | |||
/* Set Python word break characters */ | |||
completer_word_break_characters = | |||
rl_completer_word_break_characters = |