typedef struct tabSTORAGE
{
UINT str_index;
- LPWSTR name;
IStorage *storage;
} STORAGE;
return TRUE;
}
-static STORAGE *create_storage(MSISTORAGESVIEW *sv, LPWSTR name, IStorage *stg)
+static STORAGE *create_storage(MSISTORAGESVIEW *sv, LPCWSTR name, IStorage *stg)
{
STORAGE *storage;
if (!storage)
return NULL;
- storage->name = strdupW(name);
- if (!storage->name)
- {
- msi_free(storage);
- return NULL;
- }
-
- storage->str_index = msi_addstringW(sv->db->strings, 0, storage->name, -1, 1, StringNonPersistent);
+ storage->str_index = msi_addstringW(sv->db->strings, name, -1, 1, StringNonPersistent);
storage->storage = stg;
if (storage->storage)
static UINT storages_find_row(MSISTORAGESVIEW *sv, MSIRECORD *rec, UINT *row)
{
LPCWSTR str;
- UINT i, id, data;
+ UINT r, i, id, data;
str = MSI_RecordGetString(rec, 1);
- msi_string2idW(sv->db->strings, str, &id);
+ r = msi_string2idW(sv->db->strings, str, &id);
+ if (r != ERROR_SUCCESS)
+ return r;
for (i = 0; i < sv->num_rows; i++)
{
{
if (sv->storages[i]->storage)
IStorage_Release(sv->storages[i]->storage);
-
- msi_free(sv->storages[i]->name);
msi_free(sv->storages[i]);
}