Am 20.04.2010 10:44, schrieb Sebastian Dröge: > On Tue, 2010-04-20 at 15:58 +0900, Nobuhiro Iwamatsu wrote: >> Source: buzztard >> Version: 0.5.0-2 >> Severity: serious >> >> Hi, >> >> your package FTBFS on armel, alpha and sh4. >> https://buildd.debian.org/pkg.cgi?pkg=buzztard >> >> Relevant part: >> [...] >> .libs/libbuzztard_core_la-processor-machine.o >> processor-machine.c: In function 'bt_processor_machine_persistence_load': >> processor-machine.c:150: error: incompatible type for argument 6 of >> 'parent_iface->load' >> processor-machine.c:150: note: expected 'va_list' but argument is of >> type 'void *' >> make[7]: *** [libbuzztard_core_la-processor-machine.lo] Error 1 >> make[7]: Leaving directory >> `/build/buildd-buzztard_0.5.0-2-alpha-PLxAsg/buzztard-0.5.0/src/lib/core' >> make[6]: *** [all-recursive] Error 1 >> ----- > > Thanks for reporting, does the attached patch fix it for you? > > > Stefan, is this the correct fix or will this break buzztard or do you > have a better idea how to fix this? :)
The patch was needed in 3 files. I slighly modified it to use compatibility macros from glib. The attached patch is applied to svn head. Thanks! Stefan
2010-04-20 Stefan Kost <enso...@users.sf.net> * src/lib/core/processor-machine.c: * src/lib/core/sink-machine.c: * src/lib/core/source-machine.c: Fix portability issues caused by passing NULL for va_list. Index: src/lib/core/processor-machine.c =================================================================== --- src/lib/core/processor-machine.c (revision 2817) +++ src/lib/core/processor-machine.c (working copy) @@ -114,18 +114,20 @@ if(!persistence) { BtSong *song=NULL; gchar *param_name; + va_list va; + G_VA_COPY(va,var_args); // we need to get parameters from var_args (need to handle all baseclass params - param_name=va_arg(var_args,gchar*); + param_name=va_arg(va,gchar*); while(param_name) { if(!strcmp(param_name,"song")) { - song=va_arg(var_args, gpointer); + song=va_arg(va, gpointer); } else { GST_WARNING("unhandled argument: %s",param_name); break; } - param_name=va_arg(var_args,gchar*); + param_name=va_arg(va,gchar*); } // @todo: we also need the parameters the parent-class would parse // as a a quick hack copied the code from the parent class into the subclasses @@ -147,7 +149,7 @@ // load parent class stuff parent_iface=g_type_interface_peek_parent(BT_PERSISTENCE_GET_INTERFACE(result)); - parent_iface->load(BT_TYPE_MACHINE,result,node,NULL,NULL); + parent_iface->load(BT_TYPE_MACHINE,result,node,NULL,var_args); return(result); } Index: src/lib/core/sink-machine.c =================================================================== --- src/lib/core/sink-machine.c (revision 2817) +++ src/lib/core/sink-machine.c (working copy) @@ -135,19 +135,21 @@ if(!persistence) { BtSong *song=NULL; gchar *param_name; + va_list va; + G_VA_COPY(va,var_args); // we need to get parameters from var_args // @todo: this is duplicated code among the subclasses - param_name=va_arg(var_args,gchar*); + param_name=va_arg(va,gchar*); while(param_name) { if(!strcmp(param_name,"song")) { - song=va_arg(var_args,gpointer); + song=va_arg(va,gpointer); } else { GST_WARNING("unhandled argument: %s",param_name); break; } - param_name=va_arg(var_args,gchar*); + param_name=va_arg(va,gchar*); } self=bt_sink_machine_new(song,(gchar*)id,err); @@ -163,7 +165,7 @@ // load parent class stuff parent_iface=g_type_interface_peek_parent(BT_PERSISTENCE_GET_INTERFACE(result)); - parent_iface->load(BT_TYPE_MACHINE,result,node,NULL,NULL); + parent_iface->load(BT_TYPE_MACHINE,result,node,NULL,var_args); return(result); } Index: src/lib/core/source-machine.c =================================================================== --- src/lib/core/source-machine.c (revision 2817) +++ src/lib/core/source-machine.c (working copy) @@ -104,18 +104,20 @@ if(!persistence) { BtSong *song=NULL; gchar *param_name; + va_list va; + G_VA_COPY(va,var_args); // we need to get parameters from var_args - param_name=va_arg(var_args,gchar*); + param_name=va_arg(va,gchar*); while(param_name) { if(!strcmp(param_name,"song")) { - song=va_arg(var_args, gpointer); + song=va_arg(va, gpointer); } else { GST_WARNING("unhandled argument: %s",param_name); break; } - param_name=va_arg(var_args,gchar*); + param_name=va_arg(va,gchar*); } self=bt_source_machine_new(song,(gchar*)id,(gchar *)plugin_name,voices,err); @@ -133,7 +135,7 @@ // load parent class stuff parent_iface=g_type_interface_peek_parent(BT_PERSISTENCE_GET_INTERFACE(result)); - parent_iface->load(BT_TYPE_MACHINE,result,node,NULL,NULL); + parent_iface->load(BT_TYPE_MACHINE,result,node,NULL,var_args); return(result); }