Skip to content

Commit

Permalink
Temporary solution for crashing when using both :py and :py3: disallo…
Browse files Browse the repository at this point in the history
…w both in

one session.

--HG--
branch : vim73
  • Loading branch information
brammool committed Jul 24, 2010
1 parent 3d196d6 commit a324d8f
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 2 deletions.
18 changes: 18 additions & 0 deletions src/if_python.c
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,16 @@ python_runtime_link_init(char *libname, int verbose)
{
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)
return OK;
hinstPython = load_dll(libname);
Expand Down Expand Up @@ -519,6 +529,14 @@ python_end()
--recurse;
}

#if (defined(DYNAMIC_PYTHON) && defined(FEAT_PYTHON3)) || defined(PROTO)
int
python_loaded()
{
return (hinstPython != 0);
}
#endif

static int
Python_Init(void)
{
Expand Down
22 changes: 20 additions & 2 deletions src/if_python3.c
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@ static struct
*/
static void end_dynamic_python3(void)
{
if (hinstPy3)
if (hinstPy3 != 0)
{
close_dll(hinstPy3);
hinstPy3 = 0;
Expand All @@ -323,7 +323,17 @@ static int py3_runtime_link_init(char *libname, int verbose)
int i;
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;
hinstPy3 = load_dll(libname);

Expand Down Expand Up @@ -506,6 +516,14 @@ void python3_end()
--recurse;
}

#if (defined(DYNAMIC_PYTHON) && defined(FEAT_PYTHON)) || defined(PROTO)
int
python3_loaded()
{
return (hinstPy3 != 0);
}
#endif

static int Python3_Init(void)
{
if (!py3initialised)
Expand Down
1 change: 1 addition & 0 deletions src/proto/if_python.pro
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* if_python.c */
int python_enabled __ARGS((int verbose));
void python_end __ARGS((void));
int python_loaded __ARGS((void));
void ex_python __ARGS((exarg_T *eap));
void ex_pyfile __ARGS((exarg_T *eap));
void python_buffer_free __ARGS((buf_T *buf));
Expand Down
1 change: 1 addition & 0 deletions src/proto/if_python3.pro
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* if_python3.c */
int python3_enabled __ARGS((int verbose));
void python3_end __ARGS((void));
int python3_loaded __ARGS((void));
void ex_py3 __ARGS((exarg_T *eap));
void ex_py3file __ARGS((exarg_T *eap));
void python3_buffer_free __ARGS((buf_T *buf));
Expand Down

0 comments on commit a324d8f

Please sign in to comment.