diff options
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/ChangeLog | 17 | ||||
-rw-r--r-- | calendar/gui/calendar-offline-handler.c | 10 | ||||
-rw-r--r-- | calendar/gui/e-alarm-list.c | 3 | ||||
-rw-r--r-- | calendar/gui/e-comp-editor-registry.c | 28 | ||||
-rw-r--r-- | calendar/gui/e-date-time-list.c | 3 | ||||
-rw-r--r-- | calendar/gui/e-meeting-attendee.c | 3 | ||||
-rw-r--r-- | calendar/gui/e-meeting-model.c | 3 |
7 files changed, 56 insertions, 11 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 1988d6ad2a..53a8e4db3a 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,20 @@ +2003-08-12 Hans Petter Jansson <hpj@ximian.com> + + * gui/calendar-offline-handler.c (impl_dispose): Chain. Prevent + double unrefs. + (impl_finalize): Chain. + + * gui/e-alarm-list.c (finalize): Chain. + + * gui/e-comp-editor-registry.c (destroy): Chain. Prevent double frees. + (editor_destroy_cb): Don't crash if we get the destroy signal twice. + + * gui/e-date-time-list.c (e_date_time_list_finalize): Chain. + + * gui/e-meeting-attendee.c (finalize): Chain. + + * gui/e-meeting-model.c (finalize): Chain. + 2003-08-12 Andrew Wu <Yang.Wu@sun.com> * gui/e-day-view.c diff --git a/calendar/gui/calendar-offline-handler.c b/calendar/gui/calendar-offline-handler.c index 894f3cf560..fd59965283 100644 --- a/calendar/gui/calendar-offline-handler.c +++ b/calendar/gui/calendar-offline-handler.c @@ -258,7 +258,10 @@ impl_dispose (GObject *object) offline_handler = CALENDAR_OFFLINE_HANDLER (object); priv = offline_handler->priv; - g_object_unref (priv->client); + if (priv->client) { + g_object_unref (priv->client); + priv->client = NULL; + } if (priv->listener_interface != CORBA_OBJECT_NIL) { CORBA_Environment ev; @@ -270,6 +273,8 @@ impl_dispose (GObject *object) priv->listener_interface = CORBA_OBJECT_NIL; } + if (G_OBJECT_CLASS (parent_class)->dispose) + (* G_OBJECT_CLASS (parent_class)->dispose) (object); } static void @@ -282,6 +287,9 @@ impl_finalize (GObject *object) priv = offline_handler->priv; g_free (priv); + + if (G_OBJECT_CLASS (parent_class)->finalize) + (* G_OBJECT_CLASS (parent_class)->finalize) (object); } /* GTK+ type initialization. */ diff --git a/calendar/gui/e-alarm-list.c b/calendar/gui/e-alarm-list.c index 469d6de66f..534a8c9449 100644 --- a/calendar/gui/e-alarm-list.c +++ b/calendar/gui/e-alarm-list.c @@ -225,6 +225,9 @@ static void e_alarm_list_finalize (GObject *object) { EAlarmList *alarm_list = E_ALARM_LIST (object); + + if (G_OBJECT_CLASS (parent_class)->finalize) + (* G_OBJECT_CLASS (parent_class)->finalize) (object); } /* Fulfill the GtkTreeModel requirements */ diff --git a/calendar/gui/e-comp-editor-registry.c b/calendar/gui/e-comp-editor-registry.c index 1e9962c26f..68b33d11ff 100644 --- a/calendar/gui/e-comp-editor-registry.c +++ b/calendar/gui/e-comp-editor-registry.c @@ -50,13 +50,21 @@ destroy (GtkObject *obj) { ECompEditorRegistry *reg; ECompEditorRegistryPrivate *priv; - + reg = E_COMP_EDITOR_REGISTRY (obj); priv = reg->priv; - g_hash_table_destroy (priv->editors); - - g_free (priv); + if (priv) { + if (priv->editors) { + g_hash_table_destroy (priv->editors); + priv->editors = NULL; + } + + g_free (priv); + reg->priv = NULL; + } + + (* GTK_OBJECT_CLASS (parent_class)->destroy) (obj); } static void @@ -195,10 +203,10 @@ editor_destroy_cb (GtkWidget *widget, gpointer data) cal_component_get_uid (comp, &uid); rdata = g_hash_table_lookup (priv->editors, uid); - g_assert (rdata != NULL); - - g_hash_table_remove (priv->editors, rdata->uid); - g_free (rdata->uid); - g_free (rdata); -} + if (rdata != NULL) { + g_hash_table_remove (priv->editors, rdata->uid); + g_free (rdata->uid); + g_free (rdata); + } +} diff --git a/calendar/gui/e-date-time-list.c b/calendar/gui/e-date-time-list.c index 6a6848fc25..5aef6f9c51 100644 --- a/calendar/gui/e-date-time-list.c +++ b/calendar/gui/e-date-time-list.c @@ -223,6 +223,9 @@ static void e_date_time_list_finalize (GObject *object) { EDateTimeList *date_time_list = E_DATE_TIME_LIST (object); + + if (G_OBJECT_CLASS (parent_class)->finalize) + (* G_OBJECT_CLASS (parent_class)->finalize) (object); } /* Fulfill the GtkTreeModel requirements */ diff --git a/calendar/gui/e-meeting-attendee.c b/calendar/gui/e-meeting-attendee.c index f25dbc35de..8b988f085f 100644 --- a/calendar/gui/e-meeting-attendee.c +++ b/calendar/gui/e-meeting-attendee.c @@ -187,6 +187,9 @@ finalize (GObject *obj) g_array_free (priv->busy_periods, TRUE); g_free (priv); + + if (G_OBJECT_CLASS (parent_class)->finalize) + (* G_OBJECT_CLASS (parent_class)->finalize) (obj); } GObject * diff --git a/calendar/gui/e-meeting-model.c b/calendar/gui/e-meeting-model.c index dddc1f2f25..a7cd54fd85 100644 --- a/calendar/gui/e-meeting-model.c +++ b/calendar/gui/e-meeting-model.c @@ -671,6 +671,9 @@ finalize (GObject *obj) g_source_remove (priv->refresh_idle_id); g_free (priv); + + if (G_OBJECT_CLASS (parent_class)->finalize) + (* G_OBJECT_CLASS (parent_class)->finalize) (obj); } GtkObject * |