soylent r75 - trunk/src



Author: treitter
Date: Mon Feb 11 02:36:55 2008
New Revision: 75
URL: http://svn.gnome.org/viewvc/soylent?rev=75&view=rev

Log:
Fix memory access within the signal setup functions recently changed (to prevent potential crashers)

Modified:
   trunk/src/soylent-browser.c

Modified: trunk/src/soylent-browser.c
==============================================================================
--- trunk/src/soylent-browser.c	(original)
+++ trunk/src/soylent-browser.c	Mon Feb 11 02:36:55 2008
@@ -1737,18 +1737,21 @@
       widget_name = g_strdup_printf ("entry_person_email_%c", '1' + i);
 
       cb_data = g_new0 (cb_entry_changed_e_contact, 1);
-      cb_data->browser = browser;
-      cb_data->widget_name = widget_name;
-      cb_data->field = g_new0 (EContactField, 1);
-      *(cb_data->field) = E_CONTACT_EMAIL_1 + i;
-
       if (cb_data)
         {
-          /* FIXME - use a version which uses g_signal_connect_data so we can
-          * eventually free each instance of cb_data */
-          connect_retval = widget_signal_connect (wtree, widget_name,
-                                                  signal_name, callback,
-                                                  cb_data);
+          cb_data->browser = browser;
+          cb_data->widget_name = widget_name;
+          cb_data->field = g_new0 (EContactField, 1);
+          if (cb_data->field)
+            {
+              *(cb_data->field) = E_CONTACT_EMAIL_1 + i;
+
+              /* FIXME - use a version which uses g_signal_connect_data so we
+               * can eventually free each instance of cb_data */
+              connect_retval = widget_signal_connect (wtree, widget_name,
+                                                      signal_name, callback,
+                                                      cb_data);
+            }
         }
 
       if (connect_retval)
@@ -1813,18 +1816,21 @@
                                      context_list[i]);
 
       cb_data = g_new0 (cb_entry_changed_e_contact, 1);
-      cb_data->browser = browser;
-      cb_data->widget_name = widget_name;
-      cb_data->field = g_new0 (EContactField, 1);
-      *(cb_data->field) = e_contact_fields[i];
-
       if (cb_data)
         {
-          /* FIXME - use a version which uses g_signal_connect_data so we can
-          * eventually free each instance of cb_data */
-          connect_retval = widget_signal_connect (wtree, widget_name,
-                                                  signal_name, callback,
-                                                  cb_data);
+          cb_data->browser = browser;
+          cb_data->widget_name = widget_name;
+          cb_data->field = g_new0 (EContactField, 1);
+          if (cb_data->field)
+            {
+              *(cb_data->field) = e_contact_fields[i];
+
+              /* FIXME - use a version which uses g_signal_connect_data so we
+               * can eventually free each instance of cb_data */
+              connect_retval = widget_signal_connect (wtree, widget_name,
+                                                      signal_name, callback,
+                                                      cb_data);
+            }
         }
 
       if (connect_retval)
@@ -1888,20 +1894,23 @@
                                        context_list[i], '1' + j);
 
         cb_data = g_new0 (cb_entry_changed_e_contact, 1);
-        cb_data->browser = browser;
-        cb_data->widget_name = widget_name;
-        /* Allocate dynamic memory for this field, since it's assumed to be
-         * dynamically-allocated later on */
-        cb_data->field = g_new0 (EContactField, 1);
-        *(cb_data->field) = CB_DATA_FIELD_IM;
-
         if (cb_data)
           {
-            /* FIXME - use a version which uses g_signal_connect_data so we can
-            * eventually free each instance of cb_data */
-            connect_retval = widget_signal_connect (wtree, widget_name,
-                                                    signal_name, callback,
-                                                    cb_data);
+            cb_data->browser = browser;
+            cb_data->widget_name = widget_name;
+            /* Allocate dynamic memory for this field, since it's assumed to be
+             * dynamically-allocated later on */
+            cb_data->field = g_new0 (EContactField, 1);
+            if (cb_data->field)
+              {
+                *(cb_data->field) = CB_DATA_FIELD_IM;
+
+                /* FIXME - use a version which uses g_signal_connect_data so we
+                 * can eventually free each instance of cb_data */
+                connect_retval = widget_signal_connect (wtree, widget_name,
+                                                        signal_name, callback,
+                                                        cb_data);
+              }
           }
 
         if (connect_retval)
@@ -1966,18 +1975,21 @@
       widget_name = g_strdup_printf ("entry_person_web_%s", type_list[i]);
 
       cb_data = g_new0 (cb_entry_changed_e_contact, 1);
-      cb_data->browser = browser;
-      cb_data->widget_name = widget_name;
-      cb_data->field = g_new0 (EContactField, 1);
-      *(cb_data->field) = e_contact_fields[i];
-
       if (cb_data)
         {
-          /* FIXME - use a version which uses g_signal_connect_data so we can
-          * eventually free each instance of cb_data */
-          connect_retval = widget_signal_connect (wtree, widget_name,
-                                                  signal_name, callback,
-                                                  cb_data);
+          cb_data->browser = browser;
+          cb_data->widget_name = widget_name;
+          cb_data->field = g_new0 (EContactField, 1);
+          if (cb_data->field)
+            {
+              *(cb_data->field) = e_contact_fields[i];
+
+              /* FIXME - use a version which uses g_signal_connect_data so we
+               * can eventually free each instance of cb_data */
+              connect_retval = widget_signal_connect (wtree, widget_name,
+                                                      signal_name, callback,
+                                                      cb_data);
+            }
         }
 
       if (connect_retval)
@@ -2044,23 +2056,24 @@
                                        context_list[i], MAIL_FIELD_STRS[j]);
 
         cb_data = g_new0 (cb_entry_changed_e_contact, 1);
-        cb_data->browser = browser;
-        /* FIXME: don't special-case this name (compared to the other similar
-         * signal-handler-setup functions) */
-        cb_data->widget_name = g_strdup_printf ("mail_%s",
-                                                context_list[i]);
-        /* Allocate dynamic memory for this field, since it's assumed to be
-         * dynamically-allocated later on */
-        cb_data->field = g_new0 (EContactField, 1);
-        *(cb_data->field) = e_contact_fields[j];
-
         if (cb_data)
           {
-            /* FIXME - use a version which uses g_signal_connect_data so we can
-            * eventually free each instance of cb_data */
-            connect_retval = widget_signal_connect (wtree, widget_name,
-                                                    signal_name, callback,
-                                                    cb_data);
+            cb_data->browser = browser;
+            /* FIXME: don't special-case this name (compared to the other
+             * similar signal-handler-setup functions) */
+            cb_data->widget_name = g_strdup_printf ("mail_%s",
+                                                    context_list[i]);
+            cb_data->field = g_new0 (EContactField, 1);
+            if (cb_data->field)
+              {
+                *(cb_data->field) = e_contact_fields[i];
+
+                /* FIXME - use a version which uses g_signal_connect_data so we
+                 * can eventually free each instance of cb_data */
+                connect_retval = widget_signal_connect (wtree, widget_name,
+                                                        signal_name, callback,
+                                                        cb_data);
+              }
           }
 
         if (connect_retval)



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