2005-07-30 Samuel Thibault * ihash.c (add_one): Correct cast. 2005-07-30 Samuel Thibault * node.c (ftpfs_create_node): Add check for result of hurd_ihash_add(), correct addition of dir entry. Index: libihash/ihash.c =================================================================== RCS file: /cvsroot/hurd/hurd/libihash/ihash.c,v retrieving revision 1.9 diff -u -u -p -r1.9 ihash.c --- libihash/ihash.c 2 Apr 2004 17:01:03 -0000 1.9 +++ libihash/ihash.c 30 Jul 2005 01:38:27 -0000 @@ -329,7 +329,7 @@ add_one (hurd_ihash_t ht, hurd_ihash_key ht->items[first_free].key = key; if (ht->locp_offset != HURD_IHASH_NO_LOCP) - *((hurd_ihash_locp_t) (((char *) value) + ht->locp_offset)) + *((hurd_ihash_locp_t *) (((char *) value) + ht->locp_offset)) = &ht->items[first_free].value; return 1; Index: ftpfs/node.c =================================================================== RCS file: /cvsroot/hurd/hurd/ftpfs/node.c,v retrieving revision 1.2 diff -u -p -r1.2 node.c --- ftpfs/node.c 1 Mar 2004 09:58:44 -0000 1.2 +++ ftpfs/node.c 30 Jul 2005 01:38:07 -0000 @@ -39,6 +39,7 @@ ftpfs_create_node (struct ftpfs_dir_entr { struct node *new; struct netnode *nn = malloc (sizeof (struct netnode)); + error_t err; if (! nn) return ENOMEM; @@ -61,9 +62,16 @@ ftpfs_create_node (struct ftpfs_dir_entr ftpfs_maptime); spin_lock (&nn->fs->inode_mappings_lock); - hurd_ihash_add (&nn->fs->inode_mappings, e->stat.st_ino, new); + err = hurd_ihash_add (&nn->fs->inode_mappings, e->stat.st_ino, e); spin_unlock (&nn->fs->inode_mappings_lock); + if (err) + { + free(nn); + free(new); + return err; + } + e->node = new; *node = new;