[Xfce4-commits] r25398 - in squeeze/trunk: libsqueeze src
Stephan Arts
stephan at xfce.org
Fri Apr 6 14:41:46 CEST 2007
Author: stephan
Date: 2007-04-06 12:41:46 +0000 (Fri, 06 Apr 2007)
New Revision: 25398
Modified:
squeeze/trunk/libsqueeze/archive-command.c
squeeze/trunk/libsqueeze/archive.c
squeeze/trunk/libsqueeze/libsqueeze.c
squeeze/trunk/src/notebook.c
Log:
fix segfault when archive is closed while a command is running;
Modified: squeeze/trunk/libsqueeze/archive-command.c
===================================================================
--- squeeze/trunk/libsqueeze/archive-command.c 2007-04-06 12:18:39 UTC (rev 25397)
+++ squeeze/trunk/libsqueeze/archive-command.c 2007-04-06 12:41:46 UTC (rev 25398)
@@ -116,6 +116,11 @@
{
LSQArchiveCommand *command = LSQ_ARCHIVE_COMMAND(object);
g_signal_emit(object, lsq_archive_command_signals[LSQ_ARCHIVE_COMMAND_SIGNAL_TERMINATED], 0, command->error, NULL);
+ if(command->archive)
+ {
+ g_object_unref(command->archive);
+ command->archive = NULL;
+ }
parent_class->dispose(object);
}
@@ -148,7 +153,12 @@
g_return_val_if_fail(LSQ_IS_ARCHIVE(command->archive), FALSE);
#endif /* DEBUG */
- return command->execute(command);
+ g_object_ref(command->archive);
+
+ gboolean ret_val = command->execute(command);
+ if(ret_val)
+ g_object_ref(command->archive);
+ return ret_val;
}
/**
Modified: squeeze/trunk/libsqueeze/archive.c
===================================================================
--- squeeze/trunk/libsqueeze/archive.c 2007-04-06 12:18:39 UTC (rev 25397)
+++ squeeze/trunk/libsqueeze/archive.c 2007-04-06 12:41:46 UTC (rev 25398)
@@ -499,3 +499,12 @@
{
g_signal_emit(G_OBJECT(archive), lsq_archive_signals[LSQ_ARCHIVE_SIGNAL_STATE_CHANGED], 0, NULL);
}
+
+void
+lsq_close_archive(LSQArchive *archive)
+{
+ if(archive->command)
+ g_signal_handlers_disconnect_by_func(archive->command, cb_archive_archive_command_terminated, archive);
+ lsq_archive_stop(archive);
+ g_object_unref(archive);
+}
Modified: squeeze/trunk/libsqueeze/libsqueeze.c
===================================================================
--- squeeze/trunk/libsqueeze/libsqueeze.c 2007-04-06 12:18:39 UTC (rev 25397)
+++ squeeze/trunk/libsqueeze/libsqueeze.c 2007-04-06 12:41:46 UTC (rev 25398)
@@ -130,11 +130,6 @@
return 0;
}
-void
-lsq_close_archive(LSQArchive *archive)
-{
- g_object_unref(archive);
-}
GSList *
lsq_get_supported_mime_types(LSQSupportTypes types)
Modified: squeeze/trunk/src/notebook.c
===================================================================
--- squeeze/trunk/src/notebook.c 2007-04-06 12:18:39 UTC (rev 25397)
+++ squeeze/trunk/src/notebook.c 2007-04-06 12:41:46 UTC (rev 25398)
@@ -579,7 +579,9 @@
LSQArchive *archive = sq_archive_store_get_archive(SQ_ARCHIVE_STORE(archive_store));
if(archive)
+ {
g_signal_handlers_disconnect_by_func(archive, cb_notebook_archive_refreshed, treeview);
+ }
if(SQ_NOTEBOOK(notebook)->navigation_bar)
sq_navigation_bar_set_store(((SQNotebook *)notebook)->navigation_bar, NULL);
g_object_unref(archive_store);
More information about the Xfce4-commits
mailing list