--- partedit/gpart_ops.c (revision 293044) +++ partedit/gpart_ops.c (working copy) @@ -669,6 +669,14 @@ /* Set part metadata */ md = get_part_metadata(name, 1); + if (strcmp("freebsd-zfs", type) == 0) { + zpool_name = strdup((strlen(mountpoint) == 1) ? + "root" : &mountpoint[1]); + for (i = 0; zpool_name[i] != 0; i++) + if (!isalnum(zpool_name[i])) + zpool_name[i] = '_'; + } + if (newfs) { if (md->newfs != NULL) { free(md->newfs); @@ -679,11 +687,6 @@ md->newfs = malloc(strlen(newfs) + strlen(" /dev/") + strlen(mountpoint) + 5 + strlen(name) + 1); if (strcmp("freebsd-zfs", type) == 0) { - zpool_name = strdup((strlen(mountpoint) == 1) ? - "root" : &mountpoint[1]); - for (i = 0; zpool_name[i] != 0; i++) - if (!isalnum(zpool_name[i])) - zpool_name[i] = '_'; sprintf(md->newfs, "%s %s /dev/%s", newfs, zpool_name, name); } else { @@ -758,8 +761,7 @@ md->fstab->fs_mntops = strdup(md->fstab->fs_type); } - if (zpool_name != NULL) - free(zpool_name); + free(zpool_name); } static