What I believe was a bug in glib is not. When using glib/gmessages.h macro, one should take care of using - g_return_if_* in void functions - g_return_val_if_* in non-void functions See Colin Watson reply here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741128#10
The attached patch fixes it. Unfortunately, the build now dies with the following error:
clang: error: linker command failed with exit code 1 New buildlog and updated patch are here: https://github.com/nonas/debian-clang/tree/master/buildlogs/spectools Regards, Nicolas
Description: fix FTBFS with clang instead of gcc [-Wreturn-type] When using gmessages.h, one should take care of using: g_return_if_* in void functions g_return_val_if_* in non-void functions Author: Nicolas Sévelin-Radiguet <nic...@free.fr> Last-Update: 2014-03-08 --- a/spectool_raw.c +++ b/spectool_raw.c @@ -101,7 +101,7 @@ if (o == 'h') { Usage(); - return; + return 1; } else if (o == 'b') { bcastlisten = 1; } else if (o == 'n') { --- a/spectool_curses.c +++ b/spectool_curses.c @@ -90,7 +90,7 @@ if (o == 'h') { Usage(); - return; + return 1; } else if (o == 'n') { neturl = strdup(optarg); continue; @@ -98,20 +98,20 @@ if (sscanf(optarg, "%d", &range) != 1) { printf("Expected number for range, see listing for supported ranges\n"); Usage(); - return; + return 0; } continue; } else if (o == 'd') { if (sscanf(optarg, "%d", &device) != 1) { printf("Expected number for device, see listing for detected devices\n"); Usage(); - return; + return 0; } if (device < 0 || device >= ndev) { printf("Device number invalid, see listing for detected devices\n"); Usage(); - return; + return 0; } continue; --- a/spectool_gtk_hw_registry.c +++ b/spectool_gtk_hw_registry.c @@ -326,10 +326,10 @@ spectool_phy *wdr_get_phy(spectool_device_registry *wdr, int slot) { if (slot < 0 || slot > wdr->max_dev) - return; + return 0; if (wdr->devices[slot] == NULL) - return; + return 0; return wdr->devices[slot]->phydev; } @@ -523,10 +523,10 @@ char err[SPECTOOL_ERROR_MAX]; if (wdrpr->slot < 0 || wdrpr->slot > wdrpr->wdr->max_dev) - return; + return 0; if (wdrpr->wdr->netservers[wdrpr->slot] == NULL) - return; + return 0; sr = wdrpr->wdr->netservers[wdrpr->slot]->srv; @@ -537,7 +537,7 @@ Spectool_Alert_Dialog(err); wdr_close_net(wdrpr->wdr, wdrpr->slot); - return; + return 1; } } while ((r & SPECTOOL_NETCLI_POLL_ADDITIONAL)); --- a/spectool_gtk_widget.c +++ b/spectool_gtk_widget.c @@ -184,8 +184,8 @@ SpectoolWidgetController *con = (SpectoolWidgetController *) widget; char alt_title_text[32]; - g_return_if_fail(widget != NULL); - g_return_if_fail(event != NULL); + g_return_val_if_fail(widget != NULL, 0); + g_return_val_if_fail(event != NULL, 0); if (event->type == GDK_BUTTON_PRESS) { GdkEventButton *bevent = (GdkEventButton *) event; @@ -231,8 +231,8 @@ GdkColor c; GtkStyle *style; - g_return_if_fail(widget != NULL); - g_return_if_fail(IS_SPECTOOL_WIDGET(widget)); + g_return_val_if_fail(widget != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_WIDGET(widget), 0); wwidget = SPECTOOL_WIDGET(widget); @@ -294,9 +294,9 @@ GtkWidget *menu; GdkEvent *event = (GdkEvent *) button; - g_return_if_fail(widget != NULL); - g_return_if_fail(aux != NULL); - g_return_if_fail(IS_SPECTOOL_WIDGET(aux)); + g_return_val_if_fail(widget != NULL, 0); + g_return_val_if_fail(aux != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_WIDGET(aux), 0); wwidget = SPECTOOL_WIDGET(aux); @@ -780,8 +780,8 @@ SpectoolWidget *wwidget; cairo_t *cr; - g_return_if_fail(widget != NULL); - g_return_if_fail(IS_SPECTOOL_WIDGET(aux)); + g_return_val_if_fail(widget != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_WIDGET(aux), 0); wwidget = SPECTOOL_WIDGET(aux); cr = gdk_cairo_create(widget->window); --- a/spectool_gtk_channel.c +++ b/spectool_gtk_channel.c @@ -43,8 +43,8 @@ int dbm, maxy, nchannels; SpectoolWidget *wwidget; - g_return_if_fail(cwidget != NULL); - g_return_if_fail(IS_SPECTOOL_WIDGET(cwidget)); + g_return_val_if_fail(cwidget != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_WIDGET(cwidget), 0); wwidget = SPECTOOL_WIDGET(cwidget); /* Only compute if we know a chanset and if we're inside the bounding @@ -224,17 +224,17 @@ int ch; GList *upd_iter; - g_return_if_fail(aux != NULL); - g_return_if_fail(IS_SPECTOOL_CHANNEL(aux)); - g_return_if_fail(IS_SPECTOOL_WIDGET(aux)); + g_return_val_if_fail(aux != NULL, 1); + g_return_val_if_fail(IS_SPECTOOL_CHANNEL(aux), 1); + g_return_val_if_fail(IS_SPECTOOL_WIDGET(aux), 1); channel = SPECTOOL_CHANNEL(aux); wwidget = SPECTOOL_WIDGET(aux); - g_return_if_fail(wwidget->chanopts != NULL); - g_return_if_fail(wwidget->chanopts->chanset != NULL); - g_return_if_fail(wwidget->sweepcache != NULL); - g_return_if_fail(wwidget->sweepcache->latest != NULL); + g_return_val_if_fail(wwidget->chanopts != NULL, 0); + g_return_val_if_fail(wwidget->chanopts->chanset != NULL, 0); + g_return_val_if_fail(wwidget->sweepcache != NULL, 0); + g_return_val_if_fail(wwidget->sweepcache->latest != NULL, 0); if (event->button != 1) return TRUE; @@ -278,15 +278,15 @@ SpectoolWidget *wwidget; GList *upd_iter; - g_return_if_fail(aux != NULL); - g_return_if_fail(IS_SPECTOOL_CHANNEL(aux)); - g_return_if_fail(IS_SPECTOOL_WIDGET(aux)); + g_return_val_if_fail(aux != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_CHANNEL(aux), 0); + g_return_val_if_fail(IS_SPECTOOL_WIDGET(aux), 0); channel = SPECTOOL_CHANNEL(aux); wwidget = SPECTOOL_WIDGET(aux); - g_return_if_fail(wwidget->sweepcache != NULL); - g_return_if_fail(wwidget->sweepcache->latest != NULL); + g_return_val_if_fail(wwidget->sweepcache != NULL, 0); + g_return_val_if_fail(wwidget->sweepcache->latest != NULL, 0); if (event->is_hint) { gdk_window_get_pointer(event->window, &x, &y, &state); @@ -298,8 +298,8 @@ /* Search for the channel positions, update the graph if we've changed * the highlighted channel */ - g_return_if_fail(wwidget->chanopts != NULL); - g_return_if_fail(wwidget->chanopts->chanset != NULL); + g_return_val_if_fail(wwidget->chanopts != NULL, 0); + g_return_val_if_fail(wwidget->chanopts->chanset != NULL, 0); if ((ch = spectool_channel_find_chan_pt(channel, x, y)) >= -1) { if (ch != wwidget->chanopts->hi_chan) { --- a/spectool_gtk_planar.c +++ b/spectool_gtk_planar.c @@ -351,15 +351,15 @@ SpectoolWidget *wwidget; int ch; - g_return_if_fail(aux != NULL); - g_return_if_fail(IS_SPECTOOL_PLANAR(aux)); - g_return_if_fail(IS_SPECTOOL_WIDGET(aux)); + g_return_val_if_fail(aux != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_PLANAR(aux), 0); + g_return_val_if_fail(IS_SPECTOOL_WIDGET(aux), 0); planar = SPECTOOL_PLANAR(aux); wwidget = SPECTOOL_WIDGET(aux); - g_return_if_fail(wwidget->sweepcache != NULL); - g_return_if_fail(wwidget->sweepcache->avg != NULL); + g_return_val_if_fail(wwidget->sweepcache != NULL, 0); + g_return_val_if_fail(wwidget->sweepcache->avg != NULL, 0); if (event->button != 1) return TRUE; @@ -379,15 +379,15 @@ SpectoolPlanar *planar; SpectoolWidget *wwidget; - g_return_if_fail(aux != NULL); - g_return_if_fail(IS_SPECTOOL_PLANAR(aux)); - g_return_if_fail(IS_SPECTOOL_WIDGET(aux)); + g_return_val_if_fail(aux != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_PLANAR(aux), 0); + g_return_val_if_fail(IS_SPECTOOL_WIDGET(aux), 0); planar = SPECTOOL_PLANAR(aux); wwidget = SPECTOOL_WIDGET(aux); - g_return_if_fail(wwidget->sweepcache != NULL); - g_return_if_fail(wwidget->sweepcache->avg != NULL); + g_return_val_if_fail(wwidget->sweepcache != NULL, 0); + g_return_val_if_fail(wwidget->sweepcache->avg != NULL, 0); if (event->is_hint) { gdk_window_get_pointer(event->window, &x, &y, &state); --- a/spectool_gtk_spectral.c +++ b/spectool_gtk_spectral.c @@ -415,9 +415,9 @@ cairo_pattern_t *pattern; int cp; - g_return_if_fail(widget != NULL); - g_return_if_fail(aux != NULL); - g_return_if_fail(IS_SPECTOOL_SPECTRAL(aux)); + g_return_val_if_fail(widget != NULL, 0); + g_return_val_if_fail(aux != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_SPECTRAL(aux), 0); spectral = SPECTOOL_SPECTRAL(aux); --- a/spectool_gtk_topo.c +++ b/spectool_gtk_topo.c @@ -379,9 +379,9 @@ cairo_pattern_t *pattern; int cp; - g_return_if_fail(widget != NULL); - g_return_if_fail(aux != NULL); - g_return_if_fail(IS_SPECTOOL_TOPO(aux)); + g_return_val_if_fail(widget != NULL, 0); + g_return_val_if_fail(aux != NULL, 0); + g_return_val_if_fail(IS_SPECTOOL_TOPO(aux), 0); topo = SPECTOOL_TOPO(aux); --- a/spectool_gtk.c +++ b/spectool_gtk.c @@ -182,7 +182,7 @@ GtkWidget *menu; nb_aux *nbaux = (nb_aux *) aux; - g_return_if_fail(aux != NULL); + g_return_val_if_fail(aux != NULL, 0); if (event->type == GDK_BUTTON_PRESS) { GdkEventButton *bevent = (GdkEventButton *) event;