Re: trying to track down memo-file conduit bug



Ok,

I've come up with a patch to fix the memo-file conduit problem.
It works for me.  I don't use evolution, etc., so this needs
further testing.  Other conduit code was already using the 
new marshalling stuff (see gpmarshal*), so the fix was
pretty straightforward.

The patched files are:
gpilotd/gnome-pilot-conduit-standard-abs.c
gpilotd/gnome-pilot-conduit-standard-abs.h
gpilotd/gpmarshal.c
gpilotd/gpmarshal.h
gpilotd/gpmarshal.list

Matt
--- /tmp/gnome-pilot-2.0.10/gpilotd/gpmarshal.c	2003-07-14 18:32:23.000000000 +0100
+++ gpmarshal.c	2003-08-26 15:39:46.000000000 +0100
@@ -209,2 +209,121 @@
 }
 
+/* INT:POINTER,INT,INT (./gpmarshal.list:5) */
+void
+gp_marshal_INT__POINTER_INT_INT (GClosure     *closure,
+                                 GValue       *return_value,
+                                 guint         n_param_values,
+                                 const GValue *param_values,
+                                 gpointer      invocation_hint,
+                                 gpointer      marshal_data)
+{
+  typedef gint (*GMarshalFunc_INT__POINTER_INT_INT) (gpointer     data1,
+                                                     gpointer     arg_1,
+                                                     gint         arg_2,
+                                                     gint         arg_3,
+                                                     gpointer     data2);
+  register GMarshalFunc_INT__POINTER_INT_INT callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+  gint v_return;
+
+  g_return_if_fail (return_value != NULL);
+  g_return_if_fail (n_param_values == 4);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_INT__POINTER_INT_INT) (marshal_data ? marshal_data : cc->callback);
+
+  v_return = callback (data1,
+                       g_marshal_value_peek_pointer (param_values + 1),
+                       g_marshal_value_peek_int (param_values + 2),
+                       g_marshal_value_peek_int (param_values + 3),
+                       data2);
+
+  g_value_set_int (return_value, v_return);
+}
+
+/* INT:POINTER (./gpmarshal.list:6) */
+void
+gp_marshal_INT__POINTER (GClosure     *closure,
+                         GValue       *return_value,
+                         guint         n_param_values,
+                         const GValue *param_values,
+                         gpointer      invocation_hint,
+                         gpointer      marshal_data)
+{
+  typedef gint (*GMarshalFunc_INT__POINTER) (gpointer     data1,
+                                             gpointer     arg_1,
+                                             gpointer     data2);
+  register GMarshalFunc_INT__POINTER callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+  gint v_return;
+
+  g_return_if_fail (return_value != NULL);
+  g_return_if_fail (n_param_values == 2);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_INT__POINTER) (marshal_data ? marshal_data : cc->callback);
+
+  v_return = callback (data1,
+                       g_marshal_value_peek_pointer (param_values + 1),
+                       data2);
+
+  g_value_set_int (return_value, v_return);
+}
+
+/* INT:NONE (./gpmarshal.list:7) */
+void
+gp_marshal_INT__VOID (GClosure     *closure,
+                      GValue       *return_value,
+                      guint         n_param_values,
+                      const GValue *param_values,
+                      gpointer      invocation_hint,
+                      gpointer      marshal_data)
+{
+  typedef gint (*GMarshalFunc_INT__VOID) (gpointer     data1,
+                                          gpointer     data2);
+  register GMarshalFunc_INT__VOID callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+  gint v_return;
+
+  g_return_if_fail (return_value != NULL);
+  g_return_if_fail (n_param_values == 1);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_INT__VOID) (marshal_data ? marshal_data : cc->callback);
+
+  v_return = callback (data1,
+                       data2);
+
+  g_value_set_int (return_value, v_return);
+}
+
--- /tmp/gnome-pilot-2.0.10/gpilotd/gnome-pilot-conduit-standard-abs.c	2002-11-22 16:03:59.000000000 +0000
+++ gnome-pilot-conduit-standard-abs.c	2003-08-26 17:36:20.000000000 +0100
@@ -143,85 +143,4 @@
 }
 
-/* We have a bunch of marshalling functions that we need to declare.
- * We do so here */
-typedef gint (*GtkSignal_INT__POINTER_POINTER) (GtkObject * object,
-						gpointer arg1,
-						gpointer arg2,
-						gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_POINTER (GtkObject * object,
-				  GtkSignalFunc func,
-				  gpointer func_data,
-				  GtkArg * args)
-{
-	GtkSignal_INT__POINTER_POINTER rfunc;
-	gint *return_val;
-	return_val = GTK_RETLOC_INT (args[2]);
-	rfunc = (GtkSignal_INT__POINTER_POINTER) func;
-	*return_val = (*rfunc) (object,
-				GTK_VALUE_POINTER (args[0]),
-				GTK_VALUE_POINTER (args[1]),
-				func_data);
-}
-
-typedef gint (*GtkSignal_INT__POINTER_INT) (GtkObject * object,
-					    gpointer arg1,
-					    gint arg2,
-					    gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_INT (GtkObject * object,
-			      GtkSignalFunc func,
-			      gpointer func_data,
-			      GtkArg * args)
-{
-	GtkSignal_INT__POINTER_INT rfunc;
-	gint *return_val;
-	return_val = GTK_RETLOC_INT (args[2]);
-	rfunc = (GtkSignal_INT__POINTER_INT) func;
-	*return_val = (*rfunc) (object,
-				GTK_VALUE_POINTER (args[0]),
-				GTK_VALUE_INT (args[1]),
-				func_data);
-}
-
-typedef gint (*GtkSignal_INT__POINTER_INT_INT) (GtkObject * object,
-						gpointer arg1,
-						gint arg2,
-						gint arg3,
-						gpointer user_data);
-static void
-gtk_marshal_INT__POINTER_INT_INT (GtkObject * object,
-				  GtkSignalFunc func,
-				  gpointer func_data,
-				  GtkArg * args)
-{
-	GtkSignal_INT__POINTER_INT_INT rfunc;
-	gint *return_val;
-	return_val = GTK_RETLOC_INT (args[3]);
-	rfunc = (GtkSignal_INT__POINTER_INT_INT) func;
-	*return_val = (*rfunc) (object,
-				GTK_VALUE_POINTER (args[0]),
-				GTK_VALUE_INT (args[1]),
-				GTK_VALUE_INT (args[2]),
-				func_data);
-}
-
-
-typedef gint (*GtkSignal_INT__NONE) (GtkObject * object,
-				     gpointer user_data);
-static void
-gtk_marshal_INT__NONE (GtkObject * object,
-		       GtkSignalFunc func,
-		       gpointer func_data,
-		       GtkArg * args)
-{
-	GtkSignal_INT__NONE rfunc;
-	gint *return_val;
-	return_val = GTK_RETLOC_INT (args[0]);
-	rfunc = (GtkSignal_INT__NONE) func;
-	*return_val = (*rfunc) (object,
-				func_data);
-}
-
 static void
 gnome_pilot_conduit_standard_abs_class_init (GnomePilotConduitStandardAbsClass *klass)
@@ -240,5 +159,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, match_record),
-				gtk_marshal_INT__POINTER_POINTER,
+				gp_marshal_INT__POINTER_POINTER,
 				GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
 
@@ -248,5 +167,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, free_match),
-				gtk_marshal_INT__POINTER,
+				gp_marshal_INT__POINTER,
 				GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
 
@@ -256,5 +175,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, archive_local),
-				gtk_marshal_INT__POINTER,
+				gp_marshal_INT__POINTER,
 				GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
 
@@ -264,5 +183,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, archive_remote),
-				gtk_marshal_INT__POINTER_POINTER,
+				gp_marshal_INT__POINTER_POINTER,
 				GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
 
@@ -272,5 +191,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, store_remote),
-				gtk_marshal_INT__POINTER,
+				gp_marshal_INT__POINTER,
 				GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
 
@@ -280,5 +199,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, iterate),
-				gtk_marshal_INT__POINTER,
+				gp_marshal_INT__POINTER,
 				GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
 
@@ -288,5 +207,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, iterate_specific),
-				gtk_marshal_INT__POINTER_INT_INT,
+				gp_marshal_INT__POINTER_INT_INT,
 				GTK_TYPE_INT, 3, GTK_TYPE_POINTER, GTK_TYPE_INT, GTK_TYPE_INT);
 
@@ -296,5 +215,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, purge),
-				gtk_marshal_INT__NONE,
+				gp_marshal_INT__NONE,
 				GTK_TYPE_INT, 0);
 
@@ -304,5 +223,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, set_status),
-				gtk_marshal_INT__POINTER_INT,
+				gp_marshal_INT__POINTER_INT,
 				GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
 
@@ -312,5 +231,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, set_pilot_id),
-				gtk_marshal_INT__POINTER_INT,
+				gp_marshal_INT__POINTER_INT,
 				GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_INT);
 
@@ -320,5 +239,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, compare),
-				gtk_marshal_INT__POINTER_POINTER,
+				gp_marshal_INT__POINTER_POINTER,
 				GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
 
@@ -328,5 +247,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, compare_backup),
-				gtk_marshal_INT__POINTER_POINTER,
+				gp_marshal_INT__POINTER_POINTER,
 				GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
 
@@ -336,5 +255,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, free_transmit),
-				gtk_marshal_INT__POINTER_POINTER,
+				gp_marshal_INT__POINTER_POINTER,
 				GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
 
@@ -344,5 +263,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, delete_all),
-				gtk_marshal_INT__NONE,
+				gp_marshal_INT__NONE,
 				GTK_TYPE_INT, 0);
 
@@ -352,5 +271,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, transmit),
-				gtk_marshal_INT__POINTER_POINTER,
+				gp_marshal_INT__POINTER_POINTER,
 				GTK_TYPE_INT, 2, GTK_TYPE_POINTER, GTK_TYPE_POINTER);
 
@@ -360,5 +279,5 @@
 				GTK_CLASS_TYPE (object_class),
 				GTK_SIGNAL_OFFSET (GnomePilotConduitStandardAbsClass, pre_sync),
-				gtk_marshal_INT__POINTER,
+				gp_marshal_INT__POINTER,
 				GTK_TYPE_INT, 1, GTK_TYPE_POINTER);
 
--- /tmp/gnome-pilot-2.0.10/gpilotd/gnome-pilot-conduit-standard-abs.h	2001-06-19 03:06:23.000000000 +0100
+++ gnome-pilot-conduit-standard-abs.h	2003-08-26 17:36:28.000000000 +0100
@@ -28,4 +28,5 @@
 #include <gnome.h>
 #include "gnome-pilot-conduit-standard.h"
+#include "gpmarshal.h"
 
 #ifdef __cplusplus
--- /tmp/gnome-pilot-2.0.10/gpilotd/gpmarshal.list	2002-12-03 22:57:12.000000000 +0000
+++ gpmarshal.list	2003-08-26 15:33:18.000000000 +0100
@@ -3,2 +3,5 @@
 INT:POINTER,POINTER
 INT:POINTER,BOOL
+INT:POINTER,INT,INT
+INT:POINTER
+INT:NONE
--- /tmp/gnome-pilot-2.0.10/gpilotd/gpmarshal.h	2003-07-14 18:32:23.000000000 +0100
+++ gpmarshal.h	2003-08-26 15:36:39.000000000 +0100
@@ -7,5 +7,5 @@
 G_BEGIN_DECLS
 
-/* VOID:INT,POINTER (./gpmarshal.list:1) */
+/* VOID:INT,POINTER (gpmarshal.list:1) */
 extern void gp_marshal_VOID__INT_POINTER (GClosure     *closure,
                                           GValue       *return_value,
@@ -15,5 +15,5 @@
                                           gpointer      marshal_data);
 
-/* INT:POINTER,INT (./gpmarshal.list:2) */
+/* INT:POINTER,INT (gpmarshal.list:2) */
 extern void gp_marshal_INT__POINTER_INT (GClosure     *closure,
                                          GValue       *return_value,
@@ -23,5 +23,5 @@
                                          gpointer      marshal_data);
 
-/* INT:POINTER,POINTER (./gpmarshal.list:3) */
+/* INT:POINTER,POINTER (gpmarshal.list:3) */
 extern void gp_marshal_INT__POINTER_POINTER (GClosure     *closure,
                                              GValue       *return_value,
@@ -31,5 +31,5 @@
                                              gpointer      marshal_data);
 
-/* INT:POINTER,BOOL (./gpmarshal.list:4) */
+/* INT:POINTER,BOOL (gpmarshal.list:4) */
 extern void gp_marshal_INT__POINTER_BOOLEAN (GClosure     *closure,
                                              GValue       *return_value,
@@ -40,4 +40,29 @@
 #define gp_marshal_INT__POINTER_BOOL	gp_marshal_INT__POINTER_BOOLEAN
 
+/* INT:POINTER,INT,INT (gpmarshal.list:5) */
+extern void gp_marshal_INT__POINTER_INT_INT (GClosure     *closure,
+                                             GValue       *return_value,
+                                             guint         n_param_values,
+                                             const GValue *param_values,
+                                             gpointer      invocation_hint,
+                                             gpointer      marshal_data);
+
+/* INT:POINTER (gpmarshal.list:6) */
+extern void gp_marshal_INT__POINTER (GClosure     *closure,
+                                     GValue       *return_value,
+                                     guint         n_param_values,
+                                     const GValue *param_values,
+                                     gpointer      invocation_hint,
+                                     gpointer      marshal_data);
+
+/* INT:NONE (gpmarshal.list:7) */
+extern void gp_marshal_INT__VOID (GClosure     *closure,
+                                  GValue       *return_value,
+                                  guint         n_param_values,
+                                  const GValue *param_values,
+                                  gpointer      invocation_hint,
+                                  gpointer      marshal_data);
+#define gp_marshal_INT__NONE	gp_marshal_INT__VOID
+
 G_END_DECLS
 


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