summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Reiter <reiter.christoph@gmail.com>2018-08-02 11:23:58 +0000
committerChristoph Reiter <reiter.christoph@gmail.com>2018-08-02 11:23:58 +0000
commitf9563504dd06007eb0a84d7fe53ff113b9745396 (patch)
tree9a2785fd6867daefe29664de168da9c69c3a3371
parent9748b3e9a0732a173337dcd64266e803a3c77c0e (diff)
parentc2475a319597d498a97e388dada1640fd5543be2 (diff)
downloadgobject-introspection-f9563504dd06007eb0a84d7fe53ff113b9745396.tar.gz
Merge branch 'warn-flags' into 'master'
autotools: add various compiler warning flags and enable -Werror for CI See merge request GNOME/gobject-introspection!56
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--.gitlab-ci/Dockerfile1
-rw-r--r--Makefile-examples.am3
-rw-r--r--Makefile-gir.am2
-rw-r--r--Makefile-girepository.am13
-rw-r--r--Makefile-giscanner.am5
-rw-r--r--Makefile-tools.am9
-rw-r--r--configure.ac36
-rw-r--r--examples/glib-print.c8
-rw-r--r--girepository/gicallableinfo.c2
-rw-r--r--girepository/giconstantinfo.c2
-rw-r--r--girepository/gifieldinfo.c8
-rw-r--r--girepository/girepository-private.h9
-rw-r--r--girepository/girepository.c29
-rw-r--r--girepository/girffi.c2
-rw-r--r--girepository/girnode.c22
-rw-r--r--girepository/girparser.c7
-rw-r--r--girepository/girwriter.c11
-rw-r--r--girepository/gitypelib.c14
-rw-r--r--girepository/gthash.c2
-rw-r--r--giscanner/giscannermodule.c4
-rw-r--r--giscanner/sourcescanner.c6
-rw-r--r--tests/Makefile.am10
-rw-r--r--tests/offsets/Makefile.am5
-rw-r--r--tests/repository/Makefile.am4
-rw-r--r--tests/scanner/Makefile.am4
-rw-r--r--tests/scanner/annotation.c4
-rw-r--r--tests/scanner/foo.c17
-rw-r--r--tests/scanner/regress.c2
-rw-r--r--tools/generate.c9
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);