extra_len += DIRNODE_EXTRA_CNT * EXTRA_LEN;
if (relative_paths)
extra_len += PTR_EXTRA_CNT * EXTRA_LEN;
- dir_count++;
pool = dir_flist->file_pool;
} else
pool = flist->file_pool;
file->mode = save_mode;
}
- if (basename_len == 0+1)
+ if (basename_len == 0+1) {
+ if (!pool)
+ unmake_file(file);
return NULL;
+ }
if (unsort_ndx)
- F_NDX(file) = dir_count - 1;
+ F_NDX(file) = dir_count;
return file;
}
flist_expand(flist, 1);
flist->files[flist->used++] = file;
if (f >= 0) {
+ if (S_ISDIR(file->mode))
+ dir_count++;
send_file_entry(f, file, flist->used - 1, flist->ndx_start);
#ifdef SUPPORT_ACLS
if (preserve_acls && !S_ISLNK(file->mode)) {