Urgent: Strange error in button callback.




I'm sorry for sending this again but it has just gained urgent status.
I have finished EVERYTHING except this and the properties for my applet
and I was saving that for last.  Now of course I'm going to start on it
but it won't take me too long to finish it, and then this will be holding
up the release of my applet.  I wouldn't bug you all except that I am
completely stumped.

-- Old Message --

Ok, this one ought to be good.  I'm getting a segfault coming OUT of a
button callback. When I run it through gdb I get that the program recieved
a segfault at:
0x6f672f65 in ?? ()

I just this address back if I do a backtrace.

Any ideas?

I know it's getting out of the function because I have a print and a
flush at the end of the function that I get back.

Here is the function:

void remove_stuff(GtkWidget *widget, gpointer data)
{
  gchar *name[0] = {""};
  GList *li, *holdit = NULL;
  gint done = 0;

  if (selected == 1) {
    selected = 0;
    gtk_clist_clear(GTK_CLIST(adclist));
    gtk_clist_freeze(GTK_CLIST(adclist));
    for (li = g_list_nth(dtemp, 1); li != NULL; li = g_list_next(li)) {
      if (!strcmp(dselected, (name[0] = (gchar *)li->data)) && !done) {
        holdit = li;
        done = 1;
      }
      else gtk_clist_append(GTK_CLIST(adclist), name);
    }
    if (holdit) {
      dtemp = g_list_remove_link(dtemp, holdit);
      g_list_free(holdit);
    }
    gtk_clist_thaw(GTK_CLIST(adclist));
  }
g_print("hi\n"); fflush(stdout);
  if (selected == 2) {
    selected = 0;
    gtk_clist_clear(GTK_CLIST(afclist));
    gtk_clist_freeze(GTK_CLIST(afclist));
    for (li = g_list_first(ftemp); li != NULL; li = g_list_next(li)) {
      if (!strcmp(fselected, (name[0] = (gchar *)li->data)) && !done) {
        holdit = li;
        done = 1;
      }
      else gtk_clist_append(GTK_CLIST(afclist), name);
    }
    if (holdit) {
      ftemp = g_list_remove_link(ftemp, holdit);
      g_list_free(holdit);
    }
    gtk_clist_thaw(GTK_CLIST(afclist));
  }
g_print("hi\n"); fflush(stdout);
}

Here is what I do to set up the callback:

  button = gtk_button_new();
  gtk_signal_connect(GTK_OBJECT(button), "clicked",
                     GTK_SIGNAL_FUNC(remove_stuff), NULL);

I get this when I run gdb (I set a break at the end of the function):

(gdb) break file_sel.c:82
Breakpoint 1 at 0x804d87c: file file_sel.c, line 82.
(gdb) run
Starting program: /home/govind/cs/gnome/gBackGround_applet 
hi
hi

Breakpoint 1, remove_stuff (widget=0x80f2690, data=0x0)
    at file_sel.c:82
82      }
(gdb) step
0x4029c65d in gtk_marshal_NONE__NONE ()
(gdb) step
Single stepping until exit from function gtk_marshal_NONE__NONE, 
which has no line number information.
Cannot insert breakpoint 0:
Temporarily disabling shared library breakpoints:
0 

Program received signal SIGSEGV, Segmentation fault.
0x6f672f65 in ?? ()
(gdb) quit
The program is running.  Exit anyway? (y or n) y

Any and all help will be greatly appreciated.

                                        -Govind Salinas

PS: Where can I get information on building a release of my applet(in RPM and
as a tarball). This is my first time and all.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]