From aa3e2c82c786224c36e765f2d2b20e5df78c83d3 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Mon, 14 Dec 2015 11:55:26 +0000 Subject: Use -Wmissing-field-initializers warning testing all languages on Travis --- Tools/testflags.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Tools/testflags.py b/Tools/testflags.py index 63a3b4645..9aafd8eb7 100755 --- a/Tools/testflags.py +++ b/Tools/testflags.py @@ -3,7 +3,7 @@ def get_cflags(language, std, compiler): if std == None or len(std) == 0: std = "gnu89" - c_common = "-fdiagnostics-show-option -std=" + std + " -Wno-long-long -Wreturn-type -Wdeclaration-after-statement" + c_common = "-fdiagnostics-show-option -std=" + std + " -Wno-long-long -Wreturn-type -Wdeclaration-after-statement -Wmissing-field-initializers" cflags = { "csharp":"-Werror " + c_common, "d":"-Werror " + c_common, @@ -15,7 +15,7 @@ def get_cflags(language, std, compiler): "octave":"-Werror " + c_common, "perl5":"-Werror " + c_common, "php":"-Werror " + c_common, - "python":"-Werror " + c_common + " -Wmissing-field-initializers", + "python":"-Werror " + c_common, "r":"-Werror " + c_common, "ruby":"-Werror " + c_common, "scilab":"-Werror " + c_common, @@ -32,7 +32,7 @@ def get_cflags(language, std, compiler): def get_cxxflags(language, std, compiler): if std == None or len(std) == 0: std = "c++98" - cxx_common = "-fdiagnostics-show-option -std=" + std + " -Wno-long-long -Wreturn-type" + cxx_common = "-fdiagnostics-show-option -std=" + std + " -Wno-long-long -Wreturn-type -Wmissing-field-initializers" cxxflags = { "csharp":"-Werror " + cxx_common, "d":"-Werror " + cxx_common, @@ -44,7 +44,7 @@ def get_cxxflags(language, std, compiler): "octave":"-Werror " + cxx_common, "perl5":"-Werror " + cxx_common, "php":"-Werror " + cxx_common, - "python":"-Werror " + cxx_common + " -Wmissing-field-initializers", + "python":"-Werror " + cxx_common, "r":"-Werror " + cxx_common, "ruby":"-Werror " + cxx_common, "scilab": cxx_common, -- cgit v1.2.1 From 04539a930d0979859e90432e680af1a9c084aa68 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Tue, 15 Dec 2015 13:39:57 +0000 Subject: R test case warning fixes --- Examples/test-suite/r_copy_struct.i | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Examples/test-suite/r_copy_struct.i b/Examples/test-suite/r_copy_struct.i index fda321afb..6a79b5422 100644 --- a/Examples/test-suite/r_copy_struct.i +++ b/Examples/test-suite/r_copy_struct.i @@ -48,7 +48,7 @@ getA() return a; } -static struct A fixed = {20, 3, 42.0}; +static struct A fixed = {20, 3, 42.0, 0, 0}; struct A * getARef() -- cgit v1.2.1 From 4f2dcfaeeb32b22af3424c5b7a4cd2847b7875f5 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Tue, 15 Dec 2015 14:22:05 +0000 Subject: Fixes for Ruby and using -Wmissing-field-initializers --- Lib/ruby/boost_shared_ptr.i | 24 ++++++++++++------------ Lib/ruby/director.swg | 4 ++-- Lib/ruby/rubyrun.swg | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Lib/ruby/boost_shared_ptr.i b/Lib/ruby/boost_shared_ptr.i index a58f0f828..938074d81 100644 --- a/Lib/ruby/boost_shared_ptr.i +++ b/Lib/ruby/boost_shared_ptr.i @@ -26,7 +26,7 @@ // plain value %typemap(in) CONST TYPE (void *argp, int res = 0) { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %argument_fail(res, "$type", $symname, $argnum); @@ -45,7 +45,7 @@ %typemap(varin) CONST TYPE { void *argp = 0; - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %variable_fail(res, "$type", "$name"); @@ -65,7 +65,7 @@ // plain pointer // Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance %typemap(in) CONST TYPE * (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *smartarg = 0) { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %argument_fail(res, "$type", $symname, $argnum); @@ -87,7 +87,7 @@ %typemap(varin) CONST TYPE * { void *argp = 0; - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %variable_fail(res, "$type", "$name"); @@ -110,7 +110,7 @@ // plain reference %typemap(in) CONST TYPE & (void *argp = 0, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %argument_fail(res, "$type", $symname, $argnum); @@ -131,7 +131,7 @@ %typemap(varin) CONST TYPE & { void *argp = 0; - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %variable_fail(res, "$type", "$name"); @@ -156,7 +156,7 @@ // plain pointer by reference // Note: $disown not implemented by default as it will lead to a memory leak of the shared_ptr instance %typemap(in) TYPE *CONST& (void *argp = 0, int res = 0, $*1_ltype temp = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared) { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), SHARED_PTR_DISOWN | %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %argument_fail(res, "$type", $symname, $argnum); @@ -184,7 +184,7 @@ // shared_ptr by value %typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > (void *argp, int res = 0) { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %argument_fail(res, "$type", $symname, $argnum); @@ -198,7 +198,7 @@ } %typemap(varin) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; void *argp = 0; int res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { @@ -214,7 +214,7 @@ // shared_ptr by reference %typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > & (void *argp, int res = 0, $*1_ltype tempshared) { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %argument_fail(res, "$type", $symname, $argnum); @@ -241,7 +241,7 @@ // shared_ptr by pointer %typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > * (void *argp, int res = 0, $*1_ltype tempshared) { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %argument_fail(res, "$type", $symname, $argnum); @@ -269,7 +269,7 @@ // shared_ptr by pointer reference %typemap(in) SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > *& (void *argp, int res = 0, SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< CONST TYPE > tempshared, $*1_ltype temp = 0) { - swig_ruby_owntype newmem = {0}; + swig_ruby_owntype newmem = {0, 0}; res = SWIG_ConvertPtrAndOwn($input, &argp, $descriptor(SWIG_SHARED_PTR_QNAMESPACE::shared_ptr< TYPE > *), %convertptr_flags, &newmem); if (!SWIG_IsOK(res)) { %argument_fail(res, "$type", $symname, $argnum); diff --git a/Lib/ruby/director.swg b/Lib/ruby/director.swg index 5d5161db4..c6c53a343 100644 --- a/Lib/ruby/director.swg +++ b/Lib/ruby/director.swg @@ -30,7 +30,7 @@ namespace Swig { } virtual swig_ruby_owntype get_own() const { - swig_ruby_owntype own = {0}; + swig_ruby_owntype own = {0, 0}; return own; } }; @@ -332,7 +332,7 @@ namespace Swig { } swig_ruby_owntype swig_release_ownership(void *vptr) const { - swig_ruby_owntype own = {0}; + swig_ruby_owntype own = {0, 0}; if (vptr) { SWIG_GUARD(swig_mutex_own); swig_ownership_map::iterator iter = swig_owner.find(vptr); diff --git a/Lib/ruby/rubyrun.swg b/Lib/ruby/rubyrun.swg index 615d8ad38..e18208f90 100644 --- a/Lib/ruby/rubyrun.swg +++ b/Lib/ruby/rubyrun.swg @@ -245,7 +245,7 @@ typedef struct { SWIGRUNTIME swig_ruby_owntype SWIG_Ruby_AcquirePtr(VALUE obj, swig_ruby_owntype own) { - swig_ruby_owntype oldown = {0}; + swig_ruby_owntype oldown = {0, 0}; if (obj) { oldown.datafree = RDATA(obj)->dfree; RDATA(obj)->dfree = own.datafree; -- cgit v1.2.1 From ec8a5c71cbcc09e820d4d4d2e212b8d1b4f418b8 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Tue, 15 Dec 2015 14:33:20 +0000 Subject: Fixes for Octave and missing -Wmissing-field-initializers in swig_octave_member --- Source/Modules/octave.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Modules/octave.cxx b/Source/Modules/octave.cxx index 0e3e16cbb..fcbdb97e2 100644 --- a/Source/Modules/octave.cxx +++ b/Source/Modules/octave.cxx @@ -234,7 +234,7 @@ public: } Printf(f_init, "return true;\n}\n"); - Printf(s_global_tab, "{0,0,0,0,0}\n};\n"); + Printf(s_global_tab, "{0,0,0,0,0,0}\n};\n"); Printv(f_wrappers, s_global_tab, NIL); SwigType_emit_type_table(f_runtime, f_wrappers); @@ -998,7 +998,7 @@ public: Delete(cnameshdw); } - Printf(s_members_tab, "{0,0,0,0}\n};\n"); + Printf(s_members_tab, "{0,0,0,0,0,0}\n};\n"); Printv(f_wrappers, s_members_tab, NIL); String *base_class_names = NewString(""); -- cgit v1.2.1 From 6a61f8271f372e74aa0d2d44533dd1d7295eff64 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Sat, 19 Dec 2015 13:44:36 +0000 Subject: Php fix for -Wmissing-field-initializers warning Use ZEND_FE_END (introduced sometime around 5.2) to obtain the correct number of arguments for zend_function_entry. Fallback to the original 3 argument initializer if not defined, however, this will not fix the initializer warning though for some older versions of PHP. --- Lib/php/phprun.swg | 4 ++++ Source/Modules/php.cxx | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Lib/php/phprun.swg b/Lib/php/phprun.swg index 00d8bc560..3f0aa7ac6 100644 --- a/Lib/php/phprun.swg +++ b/Lib/php/phprun.swg @@ -24,6 +24,10 @@ extern "C" { # define SWIG_ZEND_NAMED_FE(ZN, N, A) ZEND_NAMED_FE(ZN, N, A) #endif +#ifndef ZEND_FE_END +# define ZEND_FE_END { NULL, NULL, NULL } +#endif + #ifndef Z_SET_ISREF_P /* For PHP < 5.3 */ # define Z_SET_ISREF_P(z) (z)->is_ref = 1 diff --git a/Source/Modules/php.cxx b/Source/Modules/php.cxx index 37a8f9628..64f03ab21 100644 --- a/Source/Modules/php.cxx +++ b/Source/Modules/php.cxx @@ -639,7 +639,7 @@ public: Printv(f_begin, all_cs_entry, "\n\n", s_arginfo, "\n\n", s_entry, " SWIG_ZEND_NAMED_FE(swig_", module, "_alter_newobject,_wrap_swig_", module, "_alter_newobject,NULL)\n" " SWIG_ZEND_NAMED_FE(swig_", module, "_get_newobject,_wrap_swig_", module, "_get_newobject,NULL)\n" - "{NULL, NULL, NULL}\n};\n\n", NIL); + " ZEND_FE_END\n};\n\n", NIL); Printv(f_begin, s_init, NIL); Delete(s_header); Delete(s_wrappers); -- cgit v1.2.1 From e9176365751d41c5ff9faa7074d1b48acf3fc59e Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Sat, 19 Dec 2015 14:53:11 +0000 Subject: Tcl fix when using -Wmissing-field-initializers warnings Only fixed for Tcl >= 8.5 as prior to this version the Tcl_HashTable structure changed a few times. --- Lib/tcl/tclrun.swg | 6 ++++++ Source/Modules/tcl8.cxx | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Lib/tcl/tclrun.swg b/Lib/tcl/tclrun.swg index c91a7e511..fd1052a28 100644 --- a/Lib/tcl/tclrun.swg +++ b/Lib/tcl/tclrun.swg @@ -67,6 +67,12 @@ #define SWIG_GetConstant SWIG_GetConstantObj #define SWIG_Tcl_GetConstant SWIG_Tcl_GetConstantObj +#if TCL_MAJOR_VERSION >= 8 && TCL_MINOR_VERSION >= 5 +#define SWIG_TCL_HASHTABLE_INIT {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} +#else +#define SWIG_TCL_HASHTABLE_INIT {0} +#endif + #include "assert.h" #ifdef __cplusplus diff --git a/Source/Modules/tcl8.cxx b/Source/Modules/tcl8.cxx index 2e32fc808..72eba0594 100644 --- a/Source/Modules/tcl8.cxx +++ b/Source/Modules/tcl8.cxx @@ -968,7 +968,7 @@ public: Printf(f_wrappers, ",0"); } Printv(f_wrappers, ", swig_", mangled_classname, "_methods, swig_", mangled_classname, "_attributes, swig_", mangled_classname, "_bases,", - "swig_", mangled_classname, "_base_names, &swig_module };\n", NIL); + "swig_", mangled_classname, "_base_names, &swig_module, SWIG_TCL_HASHTABLE_INIT };\n", NIL); if (!itcl) { Printv(cmd_tab, tab4, "{ SWIG_prefix \"", class_name, "\", (swig_wrapper_func) SWIG_ObjectConstructor, (ClientData)&_wrap_class_", mangled_classname, -- cgit v1.2.1