diff src/if_python3.c @ 13561:417a01a1aaaa v8.0.1654

patch 8.0.1654: warnings for conversion of void to function pointer commit https://github.com/vim/vim/commit/7b24ce08fe99345cac035215fca29c7e174a6456 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Mar 29 18:15:26 2018 +0200 patch 8.0.1654: warnings for conversion of void to function pointer Problem: Warnings for conversion of void to function pointer. Solution: Use a temp variable that is a function pointer.
author Christian Brabandt <cb@256bit.org>
date Thu, 29 Mar 2018 18:30:07 +0200
parents eafe575966ff
children 1feeefd8cddb
line wrap: on
line diff
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -600,7 +600,10 @@ end_dynamic_python3(void)
 py3_runtime_link_init(char *libname, int verbose)
 {
     int i;
-    void *ucs_from_string, *ucs_decode, *ucs_as_encoded_string;
+    PYTHON_PROC *ucs_from_string = (PYTHON_PROC *)&py3_PyUnicode_FromString;
+    PYTHON_PROC *ucs_decode = (PYTHON_PROC *)&py3_PyUnicode_Decode;
+    PYTHON_PROC *ucs_as_encoded_string =
+				 (PYTHON_PROC *)&py3_PyUnicode_AsEncodedString;
 
 # if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON)
     /* Can't have Python and Python3 loaded at the same time.
@@ -641,33 +644,29 @@ py3_runtime_link_init(char *libname, int
     /* Load unicode functions separately as only the ucs2 or the ucs4 functions
      * will be present in the library. */
 # if PY_VERSION_HEX >= 0x030300f0
-    ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString");
-    ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode");
-    ucs_as_encoded_string = symbol_from_dll(hinstPy3,
+    *ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicode_FromString");
+    *ucs_decode = symbol_from_dll(hinstPy3, "PyUnicode_Decode");
+    *ucs_as_encoded_string = symbol_from_dll(hinstPy3,
 	    "PyUnicode_AsEncodedString");
 # else
-    ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
-    ucs_decode = symbol_from_dll(hinstPy3,
+    *ucs_from_string = symbol_from_dll(hinstPy3, "PyUnicodeUCS2_FromString");
+    *ucs_decode = symbol_from_dll(hinstPy3,
 	    "PyUnicodeUCS2_Decode");
-    ucs_as_encoded_string = symbol_from_dll(hinstPy3,
+    *ucs_as_encoded_string = symbol_from_dll(hinstPy3,
 	    "PyUnicodeUCS2_AsEncodedString");
-    if (!ucs_from_string || !ucs_decode || !ucs_as_encoded_string)
+    if (*ucs_from_string == NULL || *ucs_decode == NULL
+					     || *ucs_as_encoded_string == NULL)
     {
-	ucs_from_string = symbol_from_dll(hinstPy3,
+	*ucs_from_string = symbol_from_dll(hinstPy3,
 		"PyUnicodeUCS4_FromString");
-	ucs_decode = symbol_from_dll(hinstPy3,
+	*ucs_decode = symbol_from_dll(hinstPy3,
 		"PyUnicodeUCS4_Decode");
-	ucs_as_encoded_string = symbol_from_dll(hinstPy3,
+	*ucs_as_encoded_string = symbol_from_dll(hinstPy3,
 		"PyUnicodeUCS4_AsEncodedString");
     }
 # endif
-    if (ucs_from_string && ucs_decode && ucs_as_encoded_string)
-    {
-	py3_PyUnicode_FromString = ucs_from_string;
-	py3_PyUnicode_Decode = ucs_decode;
-	py3_PyUnicode_AsEncodedString = ucs_as_encoded_string;
-    }
-    else
+    if (*ucs_from_string == NULL || *ucs_decode == NULL
+					     || *ucs_as_encoded_string == NULL)
     {
 	close_dll(hinstPy3);
 	hinstPy3 = 0;