Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Temporary solution for crashing when using both :py and :py3: disallo…

…w both in

one session.

--HG--
branch : vim73
  • Loading branch information...
commit a324d8f0d6f921578264878c7e7bef028e59a44b 1 parent 3d196d6
Bram Moolenaar authored
View
18 src/if_python.c
@@ -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);
@@ -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)
{
View
22 src/if_python3.c
@@ -306,7 +306,7 @@ static struct
*/
static void end_dynamic_python3(void)
{
- if (hinstPy3)
+ if (hinstPy3 != 0)
{
close_dll(hinstPy3);
hinstPy3 = 0;
@@ -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);
@@ -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)
View
1  src/proto/if_python.pro
@@ -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));
View
1  src/proto/if_python3.pro
@@ -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));
Please sign in to comment.
Something went wrong with that request. Please try again.