[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] Ramdisk



Hi,

Dieser Patch fixt zwei memleaks die beim Löschen einer Datei auftreten.
 * Löschen einer Klasse und zerstören der Klasse (beide Funktionen geben
res->buffer frei)
 * Löschen einer Link-Klasse (Link-Pfad steht nicht mehr in res->buffer
sondern in res->res.link_path)
diff --git a/apps/ramdisk/file.c b/apps/ramdisk/file.c
index 7edada7..6844a1c 100755
--- a/apps/ramdisk/file.c
+++ b/apps/ramdisk/file.c
@@ -63,6 +63,7 @@ size_t ramdisk_fs_file_write(struct cdi_fs_stream* stream, uint64_t start,
             stream->error = CDI_FS_ERROR_INTERNAL;
             return 0;
         }
+
         res->buffer = new_buffer;
         res->size = new_size;
     }
diff --git a/apps/ramdisk/res.c b/apps/ramdisk/res.c
index ef02c7a..1bfd6d1 100755
--- a/apps/ramdisk/res.c
+++ b/apps/ramdisk/res.c
@@ -168,7 +168,7 @@ int ramdisk_fs_res_remove_class(struct cdi_fs_stream* stream,
             break;
 
         case CDI_FS_CLASS_LINK:
-            free(res->buffer);	// In res->buffer steht der Pfad zum Ziel.
+            free(res->res.link_path);
             res->res.link = NULL;
             break;
 
@@ -216,7 +216,6 @@ int ramdisk_fs_res_destroy(struct ramdisk_fs_res* res)
 {
     struct ramdisk_fs_res *child;
     free(res->res.name);
-    free(res->buffer);
     while ((child = cdi_list_pop(res->res.children))) ramdisk_fs_res_destroy(child);
     cdi_list_destroy(res->res.children);
     free(res);