Package: gftp-gtk
Version: 2.0.18-14
Severity: minor
Hi,
Here is the scenario:
- Options > Start file transfer must not be ticked.
- Connect to an FTP and enqueue a file
- Right click and select "Stop Transfer"
- Right click and select "Start Transfer"
There is a race condition (see file gtk/transfer.c):
- update_downloads : unalloc transdata->transfer [= tdata]
- stop_transfer : structmutex is freed
Here is the patch to fix it. Once clicked on "Stop Transfer" (transfers are
"Waiting..."), the treeview is updated (cleared).
Matthieu
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (600, 'unstable'), (500, 'stable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.16.19-matt
Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15)
Versions of packages gftp-gtk depends on:
ii gftp-common 2.0.18-14 shared files for other gFTP packag
ii libatk1.0-0 1.11.4-2 The ATK accessibility toolkit
ii libc6 2.3.6-15 GNU C Library: Shared libraries
ii libcairo2 1.0.4-2 The Cairo 2D vector graphics libra
ii libfontconfig1 2.3.2-7 generic font configuration library
ii libglib2.0-0 2.10.3-2 The GLib library of C routines
ii libgtk2.0-0 2.8.18-1 The GTK+ graphical user interface
ii libpango1.0-0 1.12.3-1 Layout and rendering of internatio
ii libx11-6 2:1.0.0-6 X11 client-side library
ii libxcursor1 1.1.5.2-5 X cursor management library
ii libxext6 1:1.0.0-4 X11 miscellaneous extension librar
ii libxfixes3 1:3.0.1.2-4 X11 miscellaneous 'fixes' extensio
ii libxi6 1:1.0.0-5 X11 Input extension library
ii libxinerama1 1:1.0.1-4 X11 Xinerama extension library
ii libxrandr2 2:1.1.0.2-4 X11 RandR extension library
ii libxrender1 1:0.9.0.2-4 X Rendering Extension client libra
gftp-gtk recommends no packages.
-- no debconf information
--- transfer.c.orig 2006-06-28 21:32:46.000000000 +0200
+++ transfer.c 2006-06-28 21:33:37.000000000 +0200
@@ -609,9 +609,10 @@
num_transfers_in_progress--;
}
- if (!tdata->show && tdata->started)
+ if ((!tdata->show && tdata->started) ||
+ (tdata->done && !tdata->started))
{
- transdata = gtk_ctree_node_get_row_data (GTK_CTREE (dlwdw),
+ transdata = gtk_ctree_node_get_row_data (GTK_CTREE (dlwdw),
tdata->user_data);
if (transdata != NULL)
g_free (transdata);