[seed] fix #663289 - gtype signal parsing not resetting param count



commit 2717feb7db0e8516deb3fbe32c8e4204f9722887
Author: Alan Knowles <alan akbkhome com>
Date:   Thu Nov 3 15:17:05 2011 +0800

    fix #663289 - gtype signal parsing not resetting param count

 libseed/seed-gtype.c                               |    6 ++++-
 tests/javascript/gtypes/Makefile.am                |    2 +
 .../gtypes/gtype-signal-order-bug663289.js         |   25 ++++++++++++++++++++
 3 files changed, 32 insertions(+), 1 deletions(-)
---
diff --git a/libseed/seed-gtype.c b/libseed/seed-gtype.c
index 6686702..1121326 100644
--- a/libseed/seed-gtype.c
+++ b/libseed/seed-gtype.c
@@ -429,7 +429,11 @@ seed_gtype_install_signals (JSContextRef ctx,
 	return_type = seed_value_to_long (ctx, jsreturn_type, exception);
 
       jsparams = seed_object_get_property (ctx, signal_def, "parameters");
-
+      
+      // reset params..
+      param_types = NULL;
+      n_params = 0;
+      
       if (!JSValueIsNull (ctx, jsparams) && JSValueIsObject (ctx, jsparams))
 	{
 	  n_params =
diff --git a/tests/javascript/gtypes/Makefile.am b/tests/javascript/gtypes/Makefile.am
index 9efebe1..f58d745 100644
--- a/tests/javascript/gtypes/Makefile.am
+++ b/tests/javascript/gtypes/Makefile.am
@@ -4,6 +4,7 @@ EXTRA_DIST = \
 	gtype.js \
 	gtype-gtype.js \
 	gtype-signal-args.js \
+	gtype-signal-order-bug663289.js \
 	gtype-property-construct.js \
 	gtype-property-nice.js \
 	gtype-self.js \
@@ -18,6 +19,7 @@ TESTS = \
 	gtype.js \
 	gtype-gtype.js \
 	gtype-signal-args.js \
+	gtype-signal-order-bug663289.js \
 	gtype-property-construct.js \
 	gtype-property-nice.js \
 	gtype-self.js \
diff --git a/tests/javascript/gtypes/gtype-signal-order-bug663289.js b/tests/javascript/gtypes/gtype-signal-order-bug663289.js
new file mode 100755
index 0000000..03709bc
--- /dev/null
+++ b/tests/javascript/gtypes/gtype-signal-order-bug663289.js
@@ -0,0 +1,25 @@
+#!/usr/bin/env seed
+
+testsuite = imports.testsuite
+GObject = imports.gi.GObject
+
+TestObject = new GType({
+    parent: GObject.Object.type,
+    name: "TestObject",
+    signals: [{name: "more_args",
+               parameters: [GObject.TYPE_INT,
+                            GObject.TYPE_STRING]},
+              {name: "less_args",
+               return_type: GObject.TYPE_BOOLEAN}]
+})
+
+t = new TestObject()
+
+t.signal.less_args.connect(function(object)
+{
+   return true
+})
+
+testsuite.assert(t.signal.less_args.emit())
+
+testsuite.checkAsserts(1)



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