[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);