- Merge from trunk
[reactos.git] / dll / win32 / msi / storages.c
index 6a8134b..56f252f 100644 (file)
@@ -43,7 +43,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msidb);
 typedef struct tabSTORAGE
 {
     UINT str_index;
-    LPWSTR name;
     IStorage *storage;
 } STORAGE;
 
@@ -70,7 +69,7 @@ static BOOL storages_set_table_size(MSISTORAGESVIEW *sv, UINT size)
     return TRUE;
 }
 
-static STORAGE *create_storage(MSISTORAGESVIEW *sv, LPWSTR name, IStorage *stg)
+static STORAGE *create_storage(MSISTORAGESVIEW *sv, LPCWSTR name, IStorage *stg)
 {
     STORAGE *storage;
 
@@ -78,14 +77,7 @@ static STORAGE *create_storage(MSISTORAGESVIEW *sv, LPWSTR name, IStorage *stg)
     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)
@@ -342,10 +334,12 @@ static UINT STORAGES_get_column_info(struct tagMSIVIEW *view, UINT n,
 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++)
     {
@@ -436,8 +430,6 @@ static UINT STORAGES_delete(struct tagMSIVIEW *view)
     {
         if (sv->storages[i]->storage)
             IStorage_Release(sv->storages[i]->storage);
-
-        msi_free(sv->storages[i]->name);
         msi_free(sv->storages[i]);
     }