0
0
mirror of https://github.com/vim/vim.git synced 2025-09-25 03:54:15 -04:00

Temporary solution for crashing when using both :py and :py3: disallow both in

one session.
This commit is contained in:
Bram Moolenaar
2010-07-24 15:42:14 +02:00
parent 2a7e2a6254
commit 4c3a326c53
4 changed files with 40 additions and 2 deletions

View File

@@ -343,6 +343,16 @@ python_runtime_link_init(char *libname, int verbose)
{ {
int i; int i;
#if defined(UNIX) && defined(FEAT_PYTHON3)
/* Can't have Python and Python3 loaded at the same time, it may cause a
* crash. */
if (python3_loaded())
{
EMSG(_("E999: Python: Cannot use :py and :py3 in one session"));
return FAIL;
}
#endif
if (hinstPython) if (hinstPython)
return OK; return OK;
hinstPython = load_dll(libname); hinstPython = load_dll(libname);
@@ -519,6 +529,14 @@ python_end()
--recurse; --recurse;
} }
#if (defined(DYNAMIC_PYTHON) && defined(FEAT_PYTHON3)) || defined(PROTO)
int
python_loaded()
{
return (hinstPython != 0);
}
#endif
static int static int
Python_Init(void) Python_Init(void)
{ {

View File

@@ -306,7 +306,7 @@ static struct
*/ */
static void end_dynamic_python3(void) static void end_dynamic_python3(void)
{ {
if (hinstPy3) if (hinstPy3 != 0)
{ {
close_dll(hinstPy3); close_dll(hinstPy3);
hinstPy3 = 0; hinstPy3 = 0;
@@ -323,7 +323,17 @@ static int py3_runtime_link_init(char *libname, int verbose)
int i; int i;
void *ucs_from_string, *ucs_from_string_and_size; void *ucs_from_string, *ucs_from_string_and_size;
if (hinstPy3) #if defined(UNIX) && defined(FEAT_PYTHON)
/* Can't have Python and Python3 loaded at the same time, it may cause a
* crash. */
if (python_loaded())
{
EMSG(_("E999: Python: Cannot use :py and :py3 in one session"));
return FAIL;
}
#endif
if (hinstPy3 != 0)
return OK; return OK;
hinstPy3 = load_dll(libname); hinstPy3 = load_dll(libname);
@@ -506,6 +516,14 @@ void python3_end()
--recurse; --recurse;
} }
#if (defined(DYNAMIC_PYTHON) && defined(FEAT_PYTHON)) || defined(PROTO)
int
python3_loaded()
{
return (hinstPy3 != 0);
}
#endif
static int Python3_Init(void) static int Python3_Init(void)
{ {
if (!py3initialised) if (!py3initialised)

View File

@@ -1,6 +1,7 @@
/* if_python.c */ /* if_python.c */
int python_enabled __ARGS((int verbose)); int python_enabled __ARGS((int verbose));
void python_end __ARGS((void)); void python_end __ARGS((void));
int python_loaded __ARGS((void));
void ex_python __ARGS((exarg_T *eap)); void ex_python __ARGS((exarg_T *eap));
void ex_pyfile __ARGS((exarg_T *eap)); void ex_pyfile __ARGS((exarg_T *eap));
void python_buffer_free __ARGS((buf_T *buf)); void python_buffer_free __ARGS((buf_T *buf));

View File

@@ -1,6 +1,7 @@
/* if_python3.c */ /* if_python3.c */
int python3_enabled __ARGS((int verbose)); int python3_enabled __ARGS((int verbose));
void python3_end __ARGS((void)); void python3_end __ARGS((void));
int python3_loaded __ARGS((void));
void ex_py3 __ARGS((exarg_T *eap)); void ex_py3 __ARGS((exarg_T *eap));
void ex_py3file __ARGS((exarg_T *eap)); void ex_py3file __ARGS((exarg_T *eap));
void python3_buffer_free __ARGS((buf_T *buf)); void python3_buffer_free __ARGS((buf_T *buf));