]> granicus.if.org Git - vim/commitdiff
patch 8.0.1654: warnings for conversion of void to function pointer v8.0.1654
authorBram Moolenaar <Bram@vim.org>
Thu, 29 Mar 2018 16:15:26 +0000 (18:15 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 29 Mar 2018 16:15:26 +0000 (18:15 +0200)
Problem:    Warnings for conversion of void to function pointer.
Solution:   Use a temp variable that is a function pointer.

src/if_python.c
src/if_python3.c
src/version.c

index 8ba124150169a9e28c4fd923333f2ac425667065..02e2cd79e3d7ec338af6fea60fd0d8b583f60d16 100644 (file)
@@ -672,7 +672,8 @@ end_dynamic_python(void)
 python_runtime_link_init(char *libname, int verbose)
 {
     int i;
-    void *ucs_as_encoded_string;
+    PYTHON_PROC *ucs_as_encoded_string =
+                                  (PYTHON_PROC*)&py_PyUnicode_AsEncodedString;
 
 #if !(defined(PY_NO_RTLD_GLOBAL) && defined(PY3_NO_RTLD_GLOBAL)) && defined(UNIX) && defined(FEAT_PYTHON3)
     /* Can't have Python and Python3 loaded at the same time.
@@ -711,14 +712,12 @@ python_runtime_link_init(char *libname, int verbose)
 
     /* Load unicode functions separately as only the ucs2 or the ucs4 functions
      * will be present in the library. */
-    ucs_as_encoded_string = symbol_from_dll(hinstPython,
+    *ucs_as_encoded_string = symbol_from_dll(hinstPython,
                                             "PyUnicodeUCS2_AsEncodedString");
-    if (ucs_as_encoded_string == NULL)
-       ucs_as_encoded_string = symbol_from_dll(hinstPython,
+    if (*ucs_as_encoded_string == NULL)
+       *ucs_as_encoded_string = symbol_from_dll(hinstPython,
                                             "PyUnicodeUCS4_AsEncodedString");
-    if (ucs_as_encoded_string != NULL)
-       py_PyUnicode_AsEncodedString = ucs_as_encoded_string;
-    else
+    if (*ucs_as_encoded_string == NULL)
     {
        close_dll(hinstPython);
        hinstPython = 0;
index 59c115dd8db6d569ee03d8219810d6277b810e67..b885deb04921503e9412e87d5dbdfd00befeca0f 100644 (file)
@@ -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 verbose)
     /* 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;
index 791549c3a5637caeee9b5b50502a7bf5f3c57195..1d9d376fdc6f54dd45edcca7f765bafe36dd7dcb 100644 (file)
@@ -762,6 +762,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1654,
 /**/
     1653,
 /**/