Browse Source

(dump_file): Relativize link names before dumping.
This fixes a bug reported by Jose Pedro Oliveira.
(dump_file): Use offsetof when computing sizes for
struct hack; this avoids wasted space in some cases.

Paul Eggert 23 years ago
parent
commit
eb5c8f4b8b
1 changed files with 3 additions and 2 deletions
  1. 3 2
      src/create.c

+ 3 - 2
src/create.c

@@ -1139,7 +1139,8 @@ dump_file (char *p, int top_level, dev_t parent_device)
       if (1 < current_stat.st_nlink)
 	{
 	  static Hash_table *link_table;
-	  struct link *lp = xmalloc (sizeof *lp + strlen (p));
+	  struct link *lp = xmalloc (offsetof (struct link, name)
+				     + strlen (p) + 1);
 	  struct link *dup;
 	  lp->ino = current_stat.st_ino;
 	  lp->dev = current_stat.st_dev;
@@ -1154,7 +1155,7 @@ dump_file (char *p, int top_level, dev_t parent_device)
 	  if (dup != lp)
 	    {
 	      /* We found a link.  */
-	      char const *link_name = dup->name;
+	      char const *link_name = relativize (dup->name);
 
 	      free (lp);