[Xfce4-commits] r22841 - xarchiver/branches/xarchiver-psybsd/libxarchiver

Stephan Arts stephan at xfce.org
Sun Aug 20 22:38:03 UTC 2006


Author: stephan
Date: 2006-08-20 22:38:03 +0000 (Sun, 20 Aug 2006)
New Revision: 22841

Modified:
   xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c
   xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.c
Log:
fixed invalid free when extracting entire archive


Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c	2006-08-20 22:03:24 UTC (rev 22840)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support-gnu-tar.c	2006-08-20 22:38:03 UTC (rev 22841)
@@ -211,6 +211,7 @@
 gint
 lxa_archive_support_gnu_tar_extract(LXAArchive *archive, gchar *dest_path, GSList *filenames)
 {
+	gchar *command = NULL;
 	if(!LXA_IS_ARCHIVE_SUPPORT_GNU_TAR(archive->support))
 	{
 		g_critical("Support is not GNU TAR");
@@ -223,7 +224,6 @@
 	}
 	else
 	{
-		gchar *command = NULL;
 		archive->files = lxa_concat_filenames(filenames);
 		lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_EXTRACT);
 		if(g_file_test(archive->path, G_FILE_TEST_EXISTS))
@@ -265,6 +265,7 @@
 		if(command)
 		{
 			lxa_execute(command, archive, NULL, NULL, NULL, NULL);
+			g_debug("Extracting archive '%s' to '%s'", archive->path, dest_path);
 			g_free(command);
 		}
 	}

Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.c	2006-08-20 22:03:24 UTC (rev 22840)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.c	2006-08-20 22:38:03 UTC (rev 22841)
@@ -35,7 +35,10 @@
 	archive->child_pid = 0;
 	lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_IDLE);
 	if(archive->files)
+	{
 		g_free(archive->files);
+		archive->files = NULL;
+	}
 }
 
 gint
@@ -126,6 +129,8 @@
 		}
 		_filenames = _filenames->next;
 	}
+	if(!filenames)
+		return NULL;
 	return concat_str;
 }
 



More information about the Xfce4-commits mailing list