summaryrefslogtreecommitdiff
path: root/daemon/gvfsftptask.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2009-08-10 22:02:22 +0200
committerBenjamin Otte <otte@gnome.org>2009-08-19 11:08:01 +0200
commit42bab3f1fe676ad2b089c321ac0a06e16d0feb15 (patch)
treef140efd4ad983d5367dceb43d62f4b5283fefe09 /daemon/gvfsftptask.c
parentaaf322ae906589204812b0466a9f6c68b9d02571 (diff)
downloadgvfs-42bab3f1fe676ad2b089c321ac0a06e16d0feb15.tar.gz
[FTP] Plug memleak
Diffstat (limited to 'daemon/gvfsftptask.c')
-rw-r--r--daemon/gvfsftptask.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/daemon/gvfsftptask.c b/daemon/gvfsftptask.c
index d7cb2721..c52637b8 100644
--- a/daemon/gvfsftptask.c
+++ b/daemon/gvfsftptask.c
@@ -689,33 +689,40 @@ g_vfs_ftp_task_receive (GVfsFtpTask * task,
if (flags & G_VFS_FTP_PASS_100)
break;
g_vfs_ftp_task_set_error_from_response (task, response);
- return 0;
+ break;
case 2:
if (flags & G_VFS_FTP_FAIL_200)
- {
- g_vfs_ftp_task_set_error_from_response (task, response);
- return 0;
- }
+ g_vfs_ftp_task_set_error_from_response (task, response);
break;
case 3:
if (flags & G_VFS_FTP_PASS_300)
break;
g_vfs_ftp_task_set_error_from_response (task, response);
- return 0;
+ break;
case 4:
g_vfs_ftp_task_set_error_from_response (task, response);
- return 0;
+ break;
case 5:
if ((flags & G_VFS_FTP_PASS_500) ||
(response == 550 && (flags & G_VFS_FTP_PASS_550)))
break;
g_vfs_ftp_task_set_error_from_response (task, response);
- return 0;
+ break;
default:
g_assert_not_reached ();
break;
}
+ if (g_vfs_ftp_task_is_in_error (task))
+ {
+ if (response != 0 && reply)
+ {
+ g_strfreev (*reply);
+ *reply = NULL;
+ }
+ response = 0;
+ }
+
return response;
}