- existing_lte = __lookup_resource(ctx->wim->lookup_table, value_hash);
-
- if (existing_lte) {
- lte = existing_lte;
- lte->refcnt++;
- } else {
- u8 *value_copy;
- lte = new_lookup_table_entry();
- if (!lte)
- return -ENOMEM;
- value_copy = MALLOC(size);
- if (!value_copy) {
- FREE(lte);
- return -ENOMEM;
- }
- memcpy(value_copy, value, size);
- lte->resource_location = RESOURCE_IN_ATTACHED_BUFFER;
- lte->attached_buffer = value_copy;
- lte->resource_entry.original_size = size;
- lte->resource_entry.size = size;
- lte->resource_entry.flags = 0;
- copy_hash(lte->hash, value_hash);
- lookup_table_insert(ctx->wim->lookup_table, lte);
- }
- new_ads_entry->lte = lte;
- return 0;
+ ret = inode_add_ads_with_data(inode, name, (const u8*)value,
+ size, ctx->wim->lookup_table);
+ return ret ? -ENOMEM : 0;