diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-02-10 06:50:18 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-02-10 06:50:18 +0000 |
commit | b2fa1cbeda1b7893910205f38733430f521c3744 (patch) | |
tree | 0ed8dc323fd608bcb19fa18e1114351f8927eaf6 | |
parent | b814252d728cb08f159da1777feca4f8e9362327 (diff) |
1.1b7 pre2
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@68 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ext/gtk/gtk.c | 25 | ||||
-rw-r--r-- | hash.c | 3 | ||||
-rw-r--r-- | sample/test.rb | 1 | ||||
-rw-r--r-- | string.c | 3 |
4 files changed, 21 insertions, 11 deletions
diff --git a/ext/gtk/gtk.c b/ext/gtk/gtk.c index 6c68cca20c..9c922aac5a 100644 --- a/ext/gtk/gtk.c +++ b/ext/gtk/gtk.c @@ -347,11 +347,11 @@ get_gtkprevinfo(value) } static void -exec_callback(widget, data, nparams, params) +signal_callback(widget, data, nparams, params) GtkWidget *widget; VALUE data; int nparams; - GtkType *params; + GtkArg *params; { VALUE self = get_value_from_gobject(GTK_OBJECT(widget)); VALUE proc = RARRAY(data)->ptr[0]; @@ -368,6 +368,14 @@ exec_callback(widget, data, nparams, params) } static void +exec_callback(widget, proc) + GtkWidget *widget; + VALUE proc; +{ + rb_funcall(proc, id_call, 1, get_value_from_gobject(GTK_OBJECT(widget))); +} + +static void free_ttips(tips) GtkTooltips *tips; { @@ -861,13 +869,12 @@ gobj_smethod_added(self, id) GtkObject *obj = get_gobject(self); char *name = rb_id2name(NUM2INT(id)); - if (gtk_signal_lookup(name, GTK_OBJECT_TYPE(obj))) { VALUE handler = assoc_new(Qnil, id); add_relative(self, handler); gtk_signal_connect_interp(obj, name, - exec_callback, (gpointer)handler, + signal_callback, (gpointer)handler, NULL, 0); } return Qnil; @@ -922,7 +929,7 @@ gobj_sig_connect(argc, argv, self) handler = assoc_new(handler, INT2NUM(id)); add_relative(self, handler); n = gtk_signal_connect_interp(GTK_OBJECT(widget), RSTRING(sig)->ptr, - exec_callback, (gpointer)handler, + signal_callback, (gpointer)handler, NULL, 0); return INT2FIX(n); @@ -947,7 +954,7 @@ gobj_sig_connect_after(argc, argv, self) } add_relative(self, handler); n = gtk_signal_connect_interp(GTK_OBJECT(widget), RSTRING(sig)->ptr, - exec_callback, (gpointer)handler, + signal_callback, (gpointer)handler, NULL, 1); return INT2FIX(n); @@ -3715,7 +3722,7 @@ tbar_append_item(self, text, ttext, icon, func) STR2CSTR(ttext), get_widget(icon), exec_callback, - (gpointer)ary_new3(1, func)); + (gpointer)func); return self; } @@ -3733,7 +3740,7 @@ tbar_prepend_item(self, text, ttext, icon, func) STR2CSTR(ttext), get_widget(icon), exec_callback, - (gpointer)ary_new3(1, func)); + (gpointer)func); return self; } @@ -3751,7 +3758,7 @@ tbar_insert_item(self, text, ttext, icon, func, pos) STR2CSTR(ttext), get_widget(icon), exec_callback, - (gpointer)ary_new3(1, func), + (gpointer)func, NUM2INT(pos)); return self; } @@ -14,6 +14,9 @@ #include "st.h" #include "sig.h" +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif #include <sys/stat.h> #ifndef HAVE_STRING_H diff --git a/sample/test.rb b/sample/test.rb index ce0822685a..52e936af71 100644 --- a/sample/test.rb +++ b/sample/test.rb @@ -453,7 +453,6 @@ ok($x+1 == 815915283247897734345611269596115894272000000001) ok($x/fact(20) == 335367096786357081410764800000) $x = -$x ok($x == -815915283247897734345611269596115894272000000000) -p [2**32, 2-(2**32), -(2**32-2)] ok(2-(2**32) == -(2**32-2)) ok(2**32 - 5 == (2**32-3)-2) @@ -105,7 +105,8 @@ str_assign(str, str2) VALUE str, str2; { if (NIL_P(str2) || str == str2) return; - free(RSTRING(str)->ptr); + if (!RSTRING(str)->orig && RSTRING(str)->ptr) + free(RSTRING(str)->ptr); RSTRING(str)->ptr = RSTRING(str2)->ptr; RSTRING(str)->len = RSTRING(str2)->len; RSTRING(str)->orig = RSTRING(str2)->orig; |