if (dentry_set_symlink(dentry, to, w->lookup_table, <e) != 0)
goto out_free_dentry;
+ wimlib_assert(lte);
+
dentry->ads_entries[1].lte_group_list.type = STREAM_TYPE_ADS;
list_add(&dentry->ads_entries[1].lte_group_list.list,
<e->lte_group_list);
if (!ads_entries)
return WIMLIB_ERR_NOMEM;
memcpy(ads_entries[1].hash, symlink_buf_hash, WIM_HASH_SIZE);
- dentry_free_ads_entries(dentry);
+ wimlib_assert(dentry->num_ads == 0);
+ wimlib_assert(!dentry->ads_entries);
+ /*dentry_free_ads_entries(dentry);*/
dentry->num_ads = 2;
dentry->ads_entries = ads_entries;
return 0;
if (existing_lte) {
existing_lte->refcnt++;
+ lte = existing_lte;
} else {
DEBUG("Creating new lookup table entry for symlink buf");
lte = new_lookup_table_entry();
*lte_ret = lte;
return 0;
out_free_lte:
- FREE(lte);
+ if (lte != existing_lte)
+ FREE(lte);
out_free_symlink_buf:
FREE(symlink_buf);
return ret;