[glib: 1/2] Add missing 'extern' to the dllexport version of GLIB_VAR/GOBJECT_VAR



commit fdfadfc27604b58886d7a33cf5f78bb0617733e6
Author: Martin Storsjö <martin martin st>
Date:   Tue Mar 31 23:15:23 2020 +0300

    Add missing 'extern' to the dllexport version of GLIB_VAR/GOBJECT_VAR
    
    The __declspec(dllexport) attribute in itself doesn't imply
    'extern' - thus any intended variable declaration with
    GLIB_VAR/GOBJECT_VAR would actually be a variable definition. With
    C compilers defaulting to -fcommon, this isn't an issue, but
    upcoming compilers (GCC 10 and Clang 11) will default to -fno-common,
    ending up with duplicate definitions of these variables.

 glib/gtypes.h         | 2 +-
 gobject/gparamspecs.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/glib/gtypes.h b/glib/gtypes.h
index df65836a0..23c5a1295 100644
--- a/glib/gtypes.h
+++ b/glib/gtypes.h
@@ -565,7 +565,7 @@ G_END_DECLS
 #    else /* !GLIB_STATIC_COMPILATION */
 #      ifdef GLIB_COMPILATION
 #        ifdef DLL_EXPORT
-#          define GLIB_VAR __declspec(dllexport)
+#          define GLIB_VAR extern __declspec(dllexport)
 #        else /* !DLL_EXPORT */
 #          define GLIB_VAR extern
 #        endif /* !DLL_EXPORT */
diff --git a/gobject/gparamspecs.h b/gobject/gparamspecs.h
index 0309f9bb3..d0e4d5953 100644
--- a/gobject/gparamspecs.h
+++ b/gobject/gparamspecs.h
@@ -1150,7 +1150,7 @@ GParamSpec*       g_param_spec_variant     (const gchar        *name,
 #    else /* !GOBJECT_STATIC_COMPILATION */
 #      ifdef GOBJECT_COMPILATION
 #        ifdef DLL_EXPORT
-#          define GOBJECT_VAR __declspec(dllexport)
+#          define GOBJECT_VAR extern __declspec(dllexport)
 #        else /* !DLL_EXPORT */
 #          define GOBJECT_VAR extern
 #        endif /* !DLL_EXPORT */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]