diff options
author | Moritz Schulte <moritz@duesseldorf.ccc.de> | 2002-12-08 14:21:50 +0000 |
---|---|---|
committer | Moritz Schulte <moritz@duesseldorf.ccc.de> | 2002-12-08 14:21:50 +0000 |
commit | 93267e151da643a633c9716fe7d33bb405ce75f0 (patch) | |
tree | 66078f9ed270ba40beb4b0025bef933c5bc35567 /node.c | |
parent | ac65bb8782302c08cb93f89a669244ef432051e5 (diff) |
2002-12-08 Moritz Schulte <moritz@duesseldorf.ccc.de>
* lib.c: Include <sys/mman.h>.
* node.c: Include <sys/mman.h>.
(node_entries_get): munmap dirent_data as returned by
dir_entries_get.
(node_entries_get): New variable: int dirent_data_size.
* lib.c (dir_entries_get): New argument: int *dirent_data_size.
(dir_entries_get): Do not forget to munmap DATA if something goes
wrong.
* lib.h: Update dir_entries_get declaration.
Diffstat (limited to 'node.c')
-rw-r--r-- | node.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -26,6 +26,7 @@ #include <error.h> #include <fcntl.h> #include <sys/stat.h> +#include <sys/mman.h> #include <stdio.h> #include "unionfs.h" @@ -248,6 +249,7 @@ node_entries_get (node_t *node, node_dirent_t **dirents) { struct dirent **dirent_list, **dirent; node_dirent_t *node_dirent_list = NULL; + int dirent_data_size; char *dirent_data; error_t err = 0; @@ -313,8 +315,8 @@ node_entries_get (node_t *node, node_dirent_t **dirents) { if (port_valid (node_ulfs->port)) { - err = dir_entries_get (node_ulfs->port, - &dirent_data, &dirent_list); + err = dir_entries_get (node_ulfs->port, &dirent_data, + &dirent_data_size, &dirent_list); if (! err) { for (dirent = dirent_list; (! err) && *dirent; dirent++) @@ -324,6 +326,7 @@ node_entries_get (node_t *node, node_dirent_t **dirents) (*dirent)->d_fileno, (*dirent)->d_type); free (dirent_list); + munmap (dirent_data, dirent_data_size); } } } |