diff options
30 files changed, 150 insertions, 102 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 36fcbae0..41063290 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -48,6 +48,7 @@ fedora-x86_64-autotools-python2: variables: CCACHE_BASEDIR: "${CI_PROJECT_DIR}" CCACHE_DIR: "${CI_PROJECT_DIR}/_ccache" + CFLAGS: "-Werror" script: - sed -i 's|\[glib-2\.0 >= [0-9.]*\]|[glib-2.0 >= 1.0]|' configure.ac - ./autogen.sh --with-python=python2 @@ -64,6 +65,7 @@ fedora-x86_64-autotools-python3: variables: CCACHE_BASEDIR: "${CI_PROJECT_DIR}" CCACHE_DIR: "${CI_PROJECT_DIR}/_ccache" + CFLAGS: "-Werror" script: - sed -i 's|\[glib-2\.0 >= [0-9.]*\]|[glib-2.0 >= 1.0]|' configure.ac - ./autogen.sh --with-python=python3 diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile index 6d63ef21..e3083b47 100644 --- a/.gitlab-ci/Dockerfile +++ b/.gitlab-ci/Dockerfile @@ -2,6 +2,7 @@ FROM fedora:28 RUN dnf -y install \ autoconf \ + autoconf-archive \ automake \ bison \ cairo-devel \ diff --git a/Makefile-examples.am b/Makefile-examples.am index 8e5985bb..cc882a86 100644 --- a/Makefile-examples.am +++ b/Makefile-examples.am @@ -1,7 +1,8 @@ noinst_PROGRAMS += glib-print glib_print_SOURCES = examples/glib-print.c -glib_print_CFLAGS = $(GOBJECT_CFLAGS) -I$(top_srcdir)/girepository +glib_print_CFLAGS = $(GOBJECT_CFLAGS) $(WARN_CFLAGS) -I$(top_srcdir)/girepository +glib_print_LDFLAGS = $(WARN_LDFLAGS) glib_print_LDADD = libgirepository-1.0.la $(GOBJECT_LIBS) EXTRA_DIST += \ diff --git a/Makefile-gir.am b/Makefile-gir.am index 0b9cb177..2cd73586 100644 --- a/Makefile-gir.am +++ b/Makefile-gir.am @@ -197,7 +197,7 @@ GIRepository-2.0.gir: GObject-2.0.gir libgirepository-1.0.la GIRepository_2_0_gir_LIBS = libgirepository-1.0.la GIRepository_2_0_gir_SCANNERFLAGS = \ - --warn-all \ + $(WARN_SCANNERFLAGS) \ --identifier-prefix=GI \ --symbol-prefix=g \ --c-include="girepository.h" \ diff --git a/Makefile-girepository.am b/Makefile-girepository.am index f7f956a3..2af8c4a5 100644 --- a/Makefile-girepository.am +++ b/Makefile-girepository.am @@ -32,10 +32,12 @@ noinst_LTLIBRARIES += libgirepository-internals.la libgirepository-gthash.la libgirepository_gthash_la_SOURCES = \ girepository/gthash.c libgirepository_gthash_la_CFLAGS = \ + $(WARN_CFLAGS) \ $(GIREPO_CFLAGS) \ $(GI_HIDDEN_VISIBILITY_CFLAGS) \ -I$(top_srcdir)/girepository - +libgirepository_gthash_la_LDFLAGS = \ + $(WARN_LDFLAGS) libgirepository_gthash_la_LIBADD = libcmph.la $(GIREPO_LIBS) libgirepository_internals_la_SOURCES = \ @@ -50,10 +52,14 @@ libgirepository_internals_la_SOURCES = \ girepository/girwriter.h libgirepository_internals_la_CFLAGS = \ + $(WARN_CFLAGS) \ $(GIREPO_CFLAGS) \ $(GI_HIDDEN_VISIBILITY_CFLAGS) \ -I$(top_srcdir)/girepository +libgirepository_internals_la_LDFLAGS = \ + $(WARN_LDFLAGS) + libgirepository_internals_la_LIBADD = libgirepository-gthash.la $(GIREPO_LIBS) libgirepository_1_0_la_SOURCES = \ @@ -83,12 +89,14 @@ libgirepository_1_0_la_SOURCES = \ girepository/givfuncinfo.c libgirepository_1_0_la_CPPFLAGS = \ + $(WARN_CFLAGS) \ $(GIREPO_CFLAGS) \ $(GI_HIDDEN_VISIBILITY_CFLAGS) \ -I$(top_srcdir)/girepository \ -DG_IREPOSITORY_COMPILATION libgirepository_1_0_la_LIBADD = libgirepository-gthash.la $(GIREPO_LIBS) libgirepository_1_0_la_LDFLAGS = \ + $(WARN_LDFLAGS) \ $(EXTRA_LINK_FLAGS) \ -no-undefined -version-number 1:0:0 @@ -99,7 +107,8 @@ if !OS_WIN32 noinst_PROGRAMS += gi-dump-types gi_dump_types_SOURCES = girepository/gdump.c girepository/gi-dump-types.c -gi_dump_types_CFLAGS = $(GIO_UNIX_CFLAGS) $(GMODULE_CFLAGS) +gi_dump_types_CFLAGS = $(GIO_UNIX_CFLAGS) $(GMODULE_CFLAGS) $(WARN_CFLAGS) +gi_dump_types_LDFLAGS = $(WARN_LDFLAGS) gi_dump_types_LDADD = $(GIO_UNIX_LIBS) $(GMODULE_LIBS) endif diff --git a/Makefile-giscanner.am b/Makefile-giscanner.am index 8d7d8734..4f08934c 100644 --- a/Makefile-giscanner.am +++ b/Makefile-giscanner.am @@ -23,7 +23,8 @@ libgiscanner_la_SOURCES = \ giscanner/scannerparser.y libgiscanner_la_CPPFLAGS = -I$(top_srcdir)/girepository -I$(top_srcdir)/giscanner libgiscanner_la_LIBADD = $(GOBJECT_LIBS) $(GIO_LIBS) -libgiscanner_la_CFLAGS = $(GOBJECT_CFLAGS) $(GIO_CFLAGS) +libgiscanner_la_CFLAGS = $(GOBJECT_CFLAGS) $(GIO_CFLAGS) $(WARN_CFLAGS_FLEX) +libgiscanner_la_LDFLAGS = $(WARN_LDFLAGS) # Python module pkgpyexecdir = $(pkglibdir)/giscanner @@ -109,10 +110,12 @@ nobase_dist_template_DATA = \ _giscanner_la_CFLAGS = \ $(PYTHON_INCLUDES) \ $(GOBJECT_CFLAGS) \ + $(WARN_CFLAGS_PYTHON) \ -I$(top_srcdir)/giscanner _giscanner_la_LIBADD = libgiscanner.la $(GOBJECT_LIBS) _giscanner_la_LDFLAGS = \ + $(WARN_LDFLAGS) \ -module -avoid-version \ -export-symbols-regex "init_giscanner|PyInit__giscanner" diff --git a/Makefile-tools.am b/Makefile-tools.am index 5dfa6c48..8c4a069b 100644 --- a/Makefile-tools.am +++ b/Makefile-tools.am @@ -25,7 +25,8 @@ g-ir-doc-tool: tools/g-ir-tool-template.in _giscanner.la Makefile g_ir_compiler_SOURCES = tools/compiler.c g_ir_compiler_CPPFLAGS = -I$(top_srcdir)/girepository -g_ir_compiler_CFLAGS = $(GIO_CFLAGS) +g_ir_compiler_CFLAGS = $(GIO_CFLAGS) $(WARN_CFLAGS) +g_ir_compiler_LDFLAGS = $(WARN_LDFLAGS) g_ir_compiler_LDADD = \ libgirepository-internals.la \ libgirepository-1.0.la \ @@ -33,14 +34,16 @@ g_ir_compiler_LDADD = \ g_ir_generate_SOURCES = tools/generate.c g_ir_generate_CPPFLAGS = -I$(top_srcdir)/girepository -g_ir_generate_CFLAGS = $(GIO_CFLAGS) +g_ir_generate_CFLAGS = $(GIO_CFLAGS) $(WARN_CFLAGS) +g_ir_generate_LDFLAGS = $(WARN_LDFLAGS) g_ir_generate_LDADD = \ libgirepository-internals.la \ libgirepository-1.0.la \ $(GIREPO_LIBS) g_ir_inspect_SOURCES = tools/g-ir-inspect.c -g_ir_inspect_CFLAGS = $(GIO_CFLAGS) -I$(top_srcdir)/girepository +g_ir_inspect_CFLAGS = $(GIO_CFLAGS) $(WARN_CFLAGS) -I$(top_srcdir)/girepository +g_ir_inspect_LDFLAGS = $(WARN_LDFLAGS) g_ir_inspect_LDADD = \ libgirepository-1.0.la \ $(GIREPO_LIBS) diff --git a/configure.ac b/configure.ac index b33e56cf..29bddde3 100644 --- a/configure.ac +++ b/configure.ac @@ -59,29 +59,19 @@ if test "$YACC" = :; then AC_MSG_ERROR([bison not found but required]) fi - -changequote(,)dnl -ensureflag() { - flag="$1"; shift - result="$@" - - case " ${result} " in - *[\ \ ]${flag}[\ \ ]*) ;; - *) result="${flag} ${result}" ;; - esac - - echo ${result} -} -changequote([,])dnl - -if test "$GCC" = "yes"; then - for flag in -Wall -Wchar-subscripts -Wmissing-declarations \ - -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align \ - -Wsign-compare -fno-strict-aliasing; - do - CFLAGS="$(ensureflag $flag $CFLAGS)" - done -fi +# Default compiler warnings +m4_ifndef([AX_COMPILER_FLAGS], [AC_MSG_ERROR(['autoconf-archive' missing])]) +AX_COMPILER_FLAGS(,, [yes]) +# These get triggered a lot, not worth it imo, but feel free to fix them +AX_APPEND_COMPILE_FLAGS([-Wno-duplicated-branches -Wno-switch-enum]) + +WARN_CFLAGS_PYTHON="$WARN_CFLAGS" +AX_APPEND_COMPILE_FLAGS([-Wno-discarded-qualifiers], [WARN_CFLAGS_PYTHON]) +AC_SUBST(WARN_CFLAGS_PYTHON) + +WARN_CFLAGS_FLEX="$WARN_CFLAGS" +AX_APPEND_COMPILE_FLAGS([-Wno-sign-compare -Wno-switch-default -Wno-redundant-decls], [WARN_CFLAGS_FLEX]) +AC_SUBST(WARN_CFLAGS_FLEX) # Checks for libraries. AC_CHECK_LIB([dl], [dlopen]) diff --git a/examples/glib-print.c b/examples/glib-print.c index caa7cda8..595ae48b 100644 --- a/examples/glib-print.c +++ b/examples/glib-print.c @@ -24,11 +24,11 @@ main (void) return 1; } - in_args[0].v_pointer = "domain"; - in_args[1].v_pointer = "glib-print.c"; + in_args[0].v_pointer = (gpointer)"domain"; + in_args[1].v_pointer = (gpointer)"glib-print.c"; in_args[2].v_int = 42; - in_args[3].v_pointer = "main"; - in_args[4].v_pointer = "hello world"; + in_args[3].v_pointer = (gpointer)"main"; + in_args[4].v_pointer = (gpointer)"hello world"; if (!g_function_info_invoke ((GIFunctionInfo *) base_info, (const GIArgument *) &in_args, diff --git a/girepository/gicallableinfo.c b/girepository/gicallableinfo.c index 5f923d1a..e9a426e1 100644 --- a/girepository/gicallableinfo.c +++ b/girepository/gicallableinfo.c @@ -77,6 +77,8 @@ signature_offset (GICallableInfo *info) case GI_INFO_TYPE_SIGNAL: sigoff = G_STRUCT_OFFSET (SignalBlob, signature); break; + default: + g_assert_not_reached (); } if (sigoff >= 0) return *(guint32 *)&rinfo->typelib->data[rinfo->offset + sigoff]; diff --git a/girepository/giconstantinfo.c b/girepository/giconstantinfo.c index 60715a4b..d44646ee 100644 --- a/girepository/giconstantinfo.c +++ b/girepository/giconstantinfo.c @@ -166,6 +166,8 @@ g_constant_info_get_value (GIConstantInfo *info, case GI_TYPE_TAG_DOUBLE: DO_ALIGNED_COPY(&value->v_double, &rinfo->typelib->data[blob->offset], gdouble); break; + default: + g_assert_not_reached (); } } } diff --git a/girepository/gifieldinfo.c b/girepository/gifieldinfo.c index ea64dabb..4d07304e 100644 --- a/girepository/gifieldinfo.c +++ b/girepository/gifieldinfo.c @@ -337,12 +337,16 @@ g_field_info_get_field (GIFieldInfo *field_info, g_base_info_get_name ((GIBaseInfo *)field_info), g_base_info_get_type (interface)); break; + default: + break; } g_base_info_unref ((GIBaseInfo *)interface); break; } break; + default: + break; } } @@ -513,12 +517,16 @@ g_field_info_set_field (GIFieldInfo *field_info, g_base_info_get_name ((GIBaseInfo *)field_info), g_base_info_get_type (interface)); break; + default: + break; } g_base_info_unref ((GIBaseInfo *)interface); break; } break; + default: + break; } } else { switch (g_type_info_get_tag (type_info)) diff --git a/girepository/girepository-private.h b/girepository/girepository-private.h index bbd34e3e..de0b04e6 100644 --- a/girepository/girepository-private.h +++ b/girepository/girepository-private.h @@ -113,13 +113,4 @@ GIVFuncInfo * _g_base_info_find_vfunc (GIRealInfo *rinfo, gint n_vfuncs, const gchar *name); -extern ffi_status ffi_prep_closure_loc (ffi_closure *, - ffi_cif *, - void (*fun)(ffi_cif *, void *, void **, void *), - void *user_data, - void *codeloc); -extern void *ffi_closure_alloc (size_t size, void **code); -extern void ffi_closure_free (void *); - - #endif /* __GIREPOSITORY_PRIVATE_H__ */ diff --git a/girepository/girepository.c b/girepository/girepository.c index 10282c72..c1fa3d3a 100644 --- a/girepository/girepository.c +++ b/girepository/girepository.c @@ -56,7 +56,7 @@ static GIRepository *default_repository = NULL; -static GSList *search_path = NULL; +static GSList *typelib_search_path = NULL; struct _GIRepositoryPrivate { @@ -66,7 +66,7 @@ struct _GIRepositoryPrivate GHashTable *info_by_error_domain; /* GQuark -> GIBaseInfo */ }; -G_DEFINE_TYPE (GIRepository, g_irepository, G_TYPE_OBJECT); +G_DEFINE_TYPE_WITH_CODE (GIRepository, g_irepository, G_TYPE_OBJECT, G_ADD_PRIVATE (GIRepository)); #ifdef G_PLATFORM_WIN32 @@ -104,8 +104,7 @@ DllMain (HINSTANCE hinstDLL, static void g_irepository_init (GIRepository *repository) { - repository->priv = G_TYPE_INSTANCE_GET_PRIVATE (repository, G_TYPE_IREPOSITORY, - GIRepositoryPrivate); + repository->priv = g_irepository_get_instance_private (repository); repository->priv->typelibs = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify) NULL, @@ -145,8 +144,6 @@ g_irepository_class_init (GIRepositoryClass *class) gobject_class = G_OBJECT_CLASS (class); gobject_class->finalize = g_irepository_finalize; - - g_type_class_add_private (class, sizeof (GIRepositoryPrivate)); } static void @@ -160,7 +157,7 @@ init_globals (void) if (default_repository == NULL) default_repository = g_object_new (G_TYPE_IREPOSITORY, NULL); - if (search_path == NULL) + if (typelib_search_path == NULL) { const char *libdir; char *typelib_dir; @@ -172,7 +169,7 @@ init_globals (void) */ type_lib_path_env = g_getenv ("GI_TYPELIB_PATH"); - search_path = NULL; + typelib_search_path = NULL; if (type_lib_path_env) { gchar **custom_dirs; @@ -183,7 +180,7 @@ init_globals (void) d = custom_dirs; while (*d) { - search_path = g_slist_prepend (search_path, *d); + typelib_search_path = g_slist_prepend (typelib_search_path, *d); d++; } @@ -195,9 +192,9 @@ init_globals (void) typelib_dir = g_build_filename (libdir, "girepository-1.0", NULL); - search_path = g_slist_prepend (search_path, typelib_dir); + typelib_search_path = g_slist_prepend (typelib_search_path, typelib_dir); - search_path = g_slist_reverse (search_path); + typelib_search_path = g_slist_reverse (typelib_search_path); } g_once_init_leave (&initialized, 1); @@ -216,7 +213,7 @@ void g_irepository_prepend_search_path (const char *directory) { init_globals (); - search_path = g_slist_prepend (search_path, g_strdup (directory)); + typelib_search_path = g_slist_prepend (typelib_search_path, g_strdup (directory)); } /** @@ -231,7 +228,7 @@ g_irepository_prepend_search_path (const char *directory) GSList * g_irepository_get_search_path (void) { - return search_path; + return typelib_search_path; } static char * @@ -1362,7 +1359,7 @@ find_namespace_latest (const gchar *namespace, *path_ret = elected->path; *version_ret = elected->version; g_slice_free (struct NamespaceVersionCandidadate, elected); /* just free the container */ - g_slist_foreach (candidates, (GFunc) free_candidate, NULL); + g_slist_foreach (candidates, (GFunc) (void *) free_candidate, NULL); g_slist_free (candidates); } return result; @@ -1388,7 +1385,7 @@ g_irepository_enumerate_versions (GIRepository *repository, const gchar *loaded_version; init_globals (); - candidates = enumerate_namespace_versions (namespace_, search_path); + candidates = enumerate_namespace_versions (namespace_, typelib_search_path); for (link = candidates; link; link = link->next) { @@ -1555,7 +1552,7 @@ g_irepository_require (GIRepository *repository, init_globals (); typelib = require_internal (repository, namespace, version, flags, - search_path, error); + typelib_search_path, error); return typelib; } diff --git a/girepository/girffi.c b/girepository/girffi.c index 30642fe1..86a13052 100644 --- a/girepository/girffi.c +++ b/girepository/girffi.c @@ -102,6 +102,8 @@ gi_type_tag_get_ffi_type_internal (GITypeTag tag, return &ffi_type_pointer; else return &ffi_type_void; + default: + break; } g_assert_not_reached (); diff --git a/girepository/girnode.c b/girepository/girnode.c index 4d439a64..decd8420 100644 --- a/girepository/girnode.c +++ b/girepository/girnode.c @@ -923,6 +923,8 @@ _g_ir_node_can_have_member (GIrNode *node) case G_IR_NODE_FIELD: case G_IR_NODE_XREF: return FALSE; + default: + g_assert_not_reached (); }; return FALSE; } @@ -1182,14 +1184,14 @@ get_index_of_member_type (GIrNodeInterface *node, for (l = node->members; l; l = l->next) { - GIrNode *node = l->data; + GIrNode *member_node = l->data; - if (node->type != type) + if (member_node->type != type) continue; index++; - if (strcmp (node->name, name) == 0) + if (strcmp (member_node->name, name) == 0) break; } @@ -1543,13 +1545,13 @@ _g_ir_node_build_typelib (GIrNode *node, case GI_TYPE_TAG_ERROR: { - ErrorTypeBlob *blob = (ErrorTypeBlob *)&data[*offset2]; + ErrorTypeBlob *error_blob = (ErrorTypeBlob *)&data[*offset2]; - blob->pointer = 1; - blob->reserved = 0; - blob->tag = type->tag; - blob->reserved2 = 0; - blob->n_domains = 0; + error_blob->pointer = 1; + error_blob->reserved = 0; + error_blob->tag = type->tag; + error_blob->reserved2 = 0; + error_blob->n_domains = 0; *offset2 += sizeof (ErrorTypeBlob); } @@ -2305,6 +2307,8 @@ _g_ir_node_build_typelib (GIrNode *node, blob->size = strlen (constant->value) + 1; memcpy (&data[blob->offset], constant->value, blob->size); break; + default: + g_assert_not_reached (); } *offset2 += ALIGN_VALUE (blob->size, 4); diff --git a/girepository/girparser.c b/girepository/girparser.c index 4c43e0ae..97e62a53 100644 --- a/girepository/girparser.c +++ b/girepository/girparser.c @@ -2761,7 +2761,6 @@ start_element_handler (GMarkupParseContext *context, GError **error) { ParseContext *ctx = user_data; - gint line_number, char_number; if (logged_levels & G_LOG_LEVEL_DEBUG) { @@ -3093,10 +3092,13 @@ start_element_handler (GMarkupParseContext *context, ctx, error)) goto out; break; + default: + break; } if (*error == NULL && ctx->state != STATE_PASSTHROUGH) { + gint line_number, char_number; g_markup_parse_context_get_position (context, &line_number, &char_number); if (!g_str_has_prefix (element_name, "c:")) g_printerr ("%s:%d:%d: warning: element %s from state %d is unknown, ignoring\n", @@ -3108,6 +3110,7 @@ start_element_handler (GMarkupParseContext *context, out: if (*error) { + gint line_number, char_number; g_markup_parse_context_get_position (context, &line_number, &char_number); g_printerr ("%s:%d:%d: error: %s\n", ctx->file_path, line_number, char_number, (*error)->message); @@ -3478,8 +3481,8 @@ end_element_handler (GMarkupParseContext *context, (strcmp ("varargs", element_name) == 0)) { end_type (ctx); - break; } + break; case STATE_ATTRIBUTE: if (strcmp ("attribute", element_name) == 0) { diff --git a/girepository/girwriter.c b/girepository/girwriter.c index 4bc7fc96..7b255423 100644 --- a/girepository/girwriter.c +++ b/girepository/girwriter.c @@ -62,6 +62,9 @@ xml_element_free (XmlElement *elem) } static void +xml_printf (Xml *xml, const char *fmt, ...) G_GNUC_PRINTF (2, 3); + +static void xml_printf (Xml *xml, const char *fmt, ...) { va_list ap; @@ -237,7 +240,7 @@ write_type_info (const gchar *namespace, else if (tag == GI_TYPE_TAG_ARRAY) { gint length, size; - char *name = NULL; + const char *name = NULL; xml_start_element (file, "array"); @@ -502,6 +505,8 @@ write_callable_info (const gchar *namespace, case GI_DIRECTION_INOUT: xml_printf (file, " direction=\"inout\""); break; + default: + g_assert_not_reached (); } if (g_arg_info_may_be_null (arg)) @@ -526,6 +531,8 @@ write_callable_info (const gchar *namespace, case GI_SCOPE_TYPE_NOTIFIED: xml_printf (file, " scope=\"notified\""); break; + default: + g_assert_not_reached (); } if (g_arg_info_get_closure (arg) >= 0) @@ -748,7 +755,7 @@ write_constant_value (const gchar *namespace, xml_printf (file, "%" G_GUINT64_FORMAT, value->v_uint64); break; case GI_TYPE_TAG_FLOAT: - xml_printf (file, "%f", value->v_float); + xml_printf (file, "%f", (double)value->v_float); break; case GI_TYPE_TAG_DOUBLE: xml_printf (file, "%f", value->v_double); diff --git a/girepository/gitypelib.c b/girepository/gitypelib.c index d9e924f6..dbc7261e 100644 --- a/girepository/gitypelib.c +++ b/girepository/gitypelib.c @@ -272,7 +272,7 @@ strsplit_iter_init (StrSplitIter *iter, static gboolean strsplit_iter_next (StrSplitIter *iter, - char **out_val) + const char **out_val) { const char *s = iter->s; const char *next; @@ -324,7 +324,7 @@ g_typelib_matches_gtype_name_prefix (GITypelib *typelib, { Header *header = (Header *)typelib->data; const char *c_prefix; - gchar *prefix; + const gchar *prefix; gboolean ret = FALSE; StrSplitIter split_iter; gsize gtype_name_len; @@ -1500,7 +1500,7 @@ validate_struct_blob (ValidateContext *ctx, field_offset = offset + sizeof (StructBlob); for (i = 0; i < blob->n_fields; i++) { - FieldBlob *blob = (FieldBlob*) &typelib->data[field_offset]; + FieldBlob *field_blob = (FieldBlob*) &typelib->data[field_offset]; if (!validate_field_blob (ctx, field_offset, @@ -1508,7 +1508,7 @@ validate_struct_blob (ValidateContext *ctx, return FALSE; field_offset += sizeof (FieldBlob); - if (blob->has_embedded_type) + if (field_blob->has_embedded_type) field_offset += sizeof (CallbackBlob); } @@ -1778,14 +1778,14 @@ validate_object_blob (ValidateContext *ctx, n_field_callbacks = 0; for (i = 0; i < blob->n_fields; i++) { - FieldBlob *blob = (FieldBlob*) &typelib->data[offset2]; + FieldBlob *field_blob = (FieldBlob*) &typelib->data[offset2]; if (!validate_field_blob (ctx, offset2, error)) return FALSE; offset2 += sizeof (FieldBlob); /* Special case fields which are callbacks. */ - if (blob->has_embedded_type) { + if (field_blob->has_embedded_type) { offset2 += sizeof (CallbackBlob); n_field_callbacks++; } @@ -2455,7 +2455,7 @@ g_typelib_free (GITypelib *typelib) g_free (typelib->data); if (typelib->modules) { - g_list_foreach (typelib->modules, (GFunc) g_module_close, NULL); + g_list_foreach (typelib->modules, (GFunc) (void *) g_module_close, NULL); g_list_free (typelib->modules); } g_slice_free (GITypelib, typelib); diff --git a/girepository/gthash.c b/girepository/gthash.c index 2fda9035..16bfb4b8 100644 --- a/girepository/gthash.c +++ b/girepository/gthash.c @@ -177,7 +177,7 @@ _gi_typelib_hash_builder_pack (GITypelibHashBuilder *builder, guint8* mem, guint guint32 hashv; hashv = cmph_search_packed (packed_mem, str, strlen (str)); - g_assert (hashv >= 0 && hashv < num_elts); + g_assert (hashv < num_elts); table[hashv] = strval; } } diff --git a/giscanner/giscannermodule.c b/giscanner/giscannermodule.c index 2a735978..a024f1a0 100644 --- a/giscanner/giscannermodule.c +++ b/giscanner/giscannermodule.c @@ -495,7 +495,7 @@ pygi_source_scanner_set_macro_scan (PyGISourceScanner *self, } static PyObject * -pygi_source_scanner_get_symbols (PyGISourceScanner *self) +pygi_source_scanner_get_symbols (PyGISourceScanner *self, G_GNUC_UNUSED PyObject *unused) { GSList *l, *symbols; PyObject *list; @@ -516,7 +516,7 @@ pygi_source_scanner_get_symbols (PyGISourceScanner *self) } static PyObject * -pygi_source_scanner_get_comments (PyGISourceScanner *self) +pygi_source_scanner_get_comments (PyGISourceScanner *self, G_GNUC_UNUSED PyObject *unused) { GSList *l, *comments; PyObject *list; diff --git a/giscanner/sourcescanner.c b/giscanner/sourcescanner.c index 8c400171..464e4695 100644 --- a/giscanner/sourcescanner.c +++ b/giscanner/sourcescanner.c @@ -39,7 +39,7 @@ void ctype_free (GISourceType * type) { g_free (type->name); - g_list_foreach (type->child_list, (GFunc)gi_source_symbol_unref, NULL); + g_list_foreach (type->child_list, (GFunc)(void *)gi_source_symbol_unref, NULL); g_list_free (type->child_list); g_slice_free (GISourceType, type); } @@ -242,9 +242,9 @@ gi_source_scanner_free (GISourceScanner *scanner) g_hash_table_destroy (scanner->typedef_table); g_hash_table_destroy (scanner->const_table); - g_slist_foreach (scanner->comments, (GFunc)gi_source_comment_free, NULL); + g_slist_foreach (scanner->comments, (GFunc)(void *)gi_source_comment_free, NULL); g_slist_free (scanner->comments); - g_slist_foreach (scanner->symbols, (GFunc)gi_source_symbol_unref, NULL); + g_slist_foreach (scanner->symbols, (GFunc)(void *)gi_source_symbol_unref, NULL); g_slist_free (scanner->symbols); g_hash_table_unref (scanner->files); diff --git a/tests/Makefile.am b/tests/Makefile.am index d3e7c7f4..4bdb9c3b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -6,9 +6,6 @@ EXTRA_DIST= BUILT_SOURCES= CLEANFILES= -AM_CFLAGS = $(GOBJECT_CFLAGS) $(GI_HIDDEN_VISIBILITY_CFLAGS) -I$(srcdir) -LIBADD = $(GOBJECT_LIBS) - testsdir = $(datadir)/gobject-introspection-1.0/tests tests_DATA = \ everything.c \ @@ -20,7 +17,14 @@ tests_DATA = \ EXTRA_LTLIBRARIES = libeverything-1.0.la libgimarshallingtests-1.0.la libeverything_1_0_la_SOURCES = everything.c +libeverything_1_0_la_CFLAGS = $(GOBJECT_CFLAGS) $(GI_HIDDEN_VISIBILITY_CFLAGS) $(WARN_CFLAGS) -I$(srcdir) +libeverything_1_0_la_LDFLAGS = $(WARN_LDFLAGS) +libeverything_1_0_la_LIBADD = $(GOBJECT_LIBS) + libgimarshallingtests_1_0_la_SOURCES = gimarshallingtests.c +libgimarshallingtests_1_0_la_CFLAGS = $(GOBJECT_CFLAGS) $(GI_HIDDEN_VISIBILITY_CFLAGS) $(WARN_CFLAGS) -I$(srcdir) +libgimarshallingtests_1_0_la_LDFLAGS = $(WARN_LDFLAGS) +libgimarshallingtests_1_0_la_LIBADD = $(GOBJECT_LIBS) EXTRA_DIST += \ gimarshallingtests.h \ diff --git a/tests/offsets/Makefile.am b/tests/offsets/Makefile.am index fa1c1001..269b0ce1 100644 --- a/tests/offsets/Makefile.am +++ b/tests/offsets/Makefile.am @@ -17,8 +17,9 @@ liboffsets_la_SOURCES = \ offsets.h \ offsets.c liboffsets_la_CPPFLAGS = $(GIREPO_CFLAGS) $(GI_HIDDEN_VISIBILITY_CFLAGS) -I$(top_srcdir)/tests +liboffsets_la_CFLAGS = $(WARN_CFLAGS) # dummy rpath to get built dynamically (huh?) -liboffsets_la_LDFLAGS = -avoid-version -rpath $(libdir) +liboffsets_la_LDFLAGS = $(WARN_LDFLAGS) -avoid-version -rpath $(libdir) Offsets-1.0.gir: liboffsets.la offsets.h Offsets_1_0_gir_INCLUDES = GObject-2.0 @@ -36,6 +37,8 @@ EXTRA_PROGRAMS += gitestoffsets nodist_gitestoffsets_SOURCES = gitestoffsets.c gitestoffsets_CPPFLAGS = $(GIREPO_CFLAGS) -I$(top_srcdir)/girepository -I$(top_srcdir)/tests +gitestoffsets_CFLAGS = $(WARN_CFLAGS) +gitestoffsets_LDFLAGS = $(WARN_LDFLAGS) gitestoffsets_LDADD = $(top_builddir)/libgirepository-1.0.la $(GIREPO_LIBS) gitestoffsets.c: gen-gitestoffsets offsets.h Offsets-1.0.typelib diff --git a/tests/repository/Makefile.am b/tests/repository/Makefile.am index 6b4b782f..b6bde9d9 100644 --- a/tests/repository/Makefile.am +++ b/tests/repository/Makefile.am @@ -1,5 +1,5 @@ -AM_CFLAGS = $(GOBJECT_CFLAGS) -AM_LDFLAGS = -module -avoid-version +AM_CFLAGS = $(WARN_CFLAGS) $(GOBJECT_CFLAGS) +AM_LDFLAGS = $(WARN_LDFLAGS) -module -avoid-version LIBS = $(GOBJECT_LIBS) EXTRA_PROGRAMS = gitestrepo giteststructinfo gitestthrows gitypelibtest diff --git a/tests/scanner/Makefile.am b/tests/scanner/Makefile.am index 91c4a3ee..f7075856 100644 --- a/tests/scanner/Makefile.am +++ b/tests/scanner/Makefile.am @@ -22,10 +22,10 @@ CLEANFILES += $(EXTRA_LTLIBRARIES) GI_SCANNER_CFLAGS = -I$(top_srcdir)/tests AM_CPPFLAGS = -I$(top_srcdir)/girepository -AM_CFLAGS = $(GIO_CFLAGS) $(GOBJECT_CFLAGS) $(GTHREAD_CFLAGS) $(GI_HIDDEN_VISIBILITY_CFLAGS) $(GI_SCANNER_CFLAGS) +AM_CFLAGS = $(GIO_CFLAGS) $(GOBJECT_CFLAGS) $(GTHREAD_CFLAGS) $(GI_HIDDEN_VISIBILITY_CFLAGS) $(GI_SCANNER_CFLAGS) $(WARN_CFLAGS) # -rpath needed to force libtool to build a shared library for a check_LTLIBRARIES # target. See http://lists.gnu.org/archive/html/automake/2005-10/msg00107.html -AM_LDFLAGS = -rpath /unused -avoid-version +AM_LDFLAGS = $(WARN_LDFLAGS) -rpath /unused -avoid-version LIBS = $(GOBJECT_LIBS) $(GTHREAD_LIBS) libsletter_la_SOURCES = sletter.c sletter.h diff --git a/tests/scanner/annotation.c b/tests/scanner/annotation.c index 49bdd246..fb8b48f4 100644 --- a/tests/scanner/annotation.c +++ b/tests/scanner/annotation.c @@ -400,7 +400,7 @@ regress_annotation_object_get_objects (RegressAnnotationObject *object) GObject* regress_annotation_object_create_object (RegressAnnotationObject *object) { - return g_object_ref (object); + return G_OBJECT (g_object_ref (object)); } /** @@ -816,7 +816,7 @@ regress_annotation_space_after_comment_bug631690 (void) gchar* regress_annotation_return_filename (void) { - return "a utf-8 filename"; + return g_strdup ("a utf-8 filename"); } /** diff --git a/tests/scanner/foo.c b/tests/scanner/foo.c index 66b29845..2fc8ed9e 100644 --- a/tests/scanner/foo.c +++ b/tests/scanner/foo.c @@ -10,7 +10,6 @@ int regress_foo_init_argv (int argc, char **argv); int regress_foo_init_argv_address (int *argc, char ***argv); void regress_foo_private_function (RegressFooObject *regress_foo); void regress_foo_test_unsigned (unsigned int uint); -void regress_foo_interface_do_regress_foo (RegressFooInterface *self, int x); void regress_foo_do_regress_foo (RegressFooInterface *self, int x); int regress_foo_enum_method (RegressFooEnumType regress_foo_enum); RegressFooHidden * regress_foo_hidden_copy (const RegressFooHidden *boxed); @@ -466,6 +465,12 @@ regress_foo_dbus_data_get_type (void) return our_type; } +static RegressFooBRect * +regress_foo_brect_copy (const RegressFooBRect *boxed) +{ + return (RegressFooBRect *)g_memdup (boxed, sizeof (RegressFooBRect)); +} + GType regress_foo_brect_get_type (void) { @@ -473,11 +478,17 @@ regress_foo_brect_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static ("RegressFooBRect", - (GBoxedCopyFunc) g_memdup, /* Won't work */ + (GBoxedCopyFunc) regress_foo_brect_copy, (GBoxedFreeFunc) g_free); return our_type; } +static RegressFooBUnion * +regress_foo_bunion_copy (const RegressFooBUnion *boxed) +{ + return (RegressFooBUnion *)g_memdup (boxed, sizeof (RegressFooBUnion)); +} + GType regress_foo_bunion_get_type (void) { @@ -485,7 +496,7 @@ regress_foo_bunion_get_type (void) if (our_type == 0) our_type = g_boxed_type_register_static ("RegressFooBUnion", - (GBoxedCopyFunc) g_memdup, /* Won't work */ + (GBoxedCopyFunc) regress_foo_bunion_copy, (GBoxedFreeFunc) g_free); return our_type; } diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c index 29652caa..2302209f 100644 --- a/tests/scanner/regress.c +++ b/tests/scanner/regress.c @@ -2137,7 +2137,7 @@ regress_test_obj_set_property (GObject *object, case PROP_TEST_OBJ_LIST_OLD: g_list_free_full (self->list, g_free); list = g_value_get_pointer (value); - self->list = g_list_copy_deep (list, (GCopyFunc) g_strdup, NULL); + self->list = g_list_copy_deep (list, (GCopyFunc) (void *) g_strdup, NULL); break; case PROP_TEST_OBJ_INT: diff --git a/tools/generate.c b/tools/generate.c index 926ffcac..36e1d05a 100644 --- a/tools/generate.c +++ b/tools/generate.c @@ -60,7 +60,12 @@ main (int argc, char *argv[]) context = g_option_context_new (""); g_option_context_add_main_entries (context, options, NULL); - g_option_context_parse (context, &argc, &argv, &error); + if (!g_option_context_parse (context, &argc, &argv, &error)) + { + g_fprintf (stderr, "failed to parse: %s\n", error->message); + g_error_free (error); + return 1; + } if (!input) { @@ -75,11 +80,11 @@ main (int argc, char *argv[]) for (i = 0; input[i]; i++) { - GError *error = NULL; const char *namespace; GMappedFile *mfile; GITypelib *typelib; + error = NULL; mfile = g_mapped_file_new (input[i], FALSE, &error); if (!mfile) g_error ("failed to read '%s': %s", input[i], error->message); |