summaryrefslogtreecommitdiffstats
path: root/system/curlftpfs/patches/curlftpfs-0.9.2-memleak-cached-591299.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/curlftpfs/patches/curlftpfs-0.9.2-memleak-cached-591299.patch')
-rw-r--r--system/curlftpfs/patches/curlftpfs-0.9.2-memleak-cached-591299.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/system/curlftpfs/patches/curlftpfs-0.9.2-memleak-cached-591299.patch b/system/curlftpfs/patches/curlftpfs-0.9.2-memleak-cached-591299.patch
new file mode 100644
index 0000000000..d08c1f82d4
--- /dev/null
+++ b/system/curlftpfs/patches/curlftpfs-0.9.2-memleak-cached-591299.patch
@@ -0,0 +1,58 @@
+@@ -, +, @@
+---
+ cache.c | 2 1 + 1 - 0 !
+ ftpfs-ls.c | 19 15 + 4 - 0 !
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+--- b/cache.c
++++ b/cache.c
+@@ -25,7 +25,7 @@ struct cache {
+ time_t last_cleaned;
+ };
+
+-static struct cache cache;
++struct cache cache;
+
+ struct node {
+ struct stat stat;
+--- b/ftpfs-ls.c
++++ b/ftpfs-ls.c
+@@ -25,6 +25,13 @@
+ #include "charset_utils.h"
+ #include "ftpfs-ls.h"
+
++struct cache {
++ int on;
++ char incomplete[];
++};
++
++extern struct cache cache;
++
+ static int parse_dir_unix(const char *line,
+ struct stat *sbuf,
+ char *file,
+@@ -243,8 +250,10 @@ int parse_dir(const char* list, const ch
+ reallink = g_strdup(link);
+ }
+ int linksize = strlen(reallink);
+- cache_add_link(full_path, reallink, linksize+1);
+- DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink);
++ if (cache.on) {
++ cache_add_link(full_path, reallink, linksize+1);
++ DEBUG(1, "cache_add_link: %s %s\n", full_path, reallink);
++ }
+ if (linkbuf && linklen) {
+ if (linksize > linklen) linksize = linklen - 1;
+ strncpy(linkbuf, reallink, linksize);
+@@ -257,8 +266,10 @@ int parse_dir(const char* list, const ch
+ DEBUG(1, "filler: %s\n", file);
+ filler(h, file, &stat_buf);
+ } else {
+- DEBUG(1, "cache_add_attr: %s\n", full_path);
+- cache_add_attr(full_path, &stat_buf);
++ if (cache.on) {
++ DEBUG(1, "cache_add_attr: %s\n", full_path);
++ cache_add_attr(full_path, &stat_buf);
++ }
+ }
+
+ DEBUG(2, "comparing %s %s\n", name, file);