diff options
Diffstat (limited to 'OpenSim/Data')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLInventoryData.cs | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/OpenSim/Data/MySQL/MySQLInventoryData.cs b/OpenSim/Data/MySQL/MySQLInventoryData.cs index f9583cf..755dbab 100644 --- a/OpenSim/Data/MySQL/MySQLInventoryData.cs +++ b/OpenSim/Data/MySQL/MySQLInventoryData.cs | |||
@@ -141,8 +141,13 @@ namespace OpenSim.Data.MySQL | |||
141 | result.Parameters.AddWithValue("?uuid", folderID.ToString()); | 141 | result.Parameters.AddWithValue("?uuid", folderID.ToString()); |
142 | MySqlDataReader reader = result.ExecuteReader(); | 142 | MySqlDataReader reader = result.ExecuteReader(); |
143 | 143 | ||
144 | while (reader.Read()) | 144 | while (reader.Read()) |
145 | items.Add(readInventoryItem(reader)); | 145 | { |
146 | // A null item (because something went wrong) breaks everything in the folder | ||
147 | InventoryItemBase item = readInventoryItem(reader); | ||
148 | if (item != null) | ||
149 | items.Add(item); | ||
150 | } | ||
146 | 151 | ||
147 | reader.Close(); | 152 | reader.Close(); |
148 | result.Dispose(); | 153 | result.Dispose(); |
@@ -301,24 +306,36 @@ namespace OpenSim.Data.MySQL | |||
301 | try | 306 | try |
302 | { | 307 | { |
303 | InventoryItemBase item = new InventoryItemBase(); | 308 | InventoryItemBase item = new InventoryItemBase(); |
304 | 309 | // Be a bit safer in parsing these because the | |
310 | // database doesn't enforce them to be not null, and | ||
311 | // the inventory still works if these are weird in the | ||
312 | // db | ||
313 | |||
314 | UUID Owner = UUID.Zero; | ||
315 | UUID Creator = UUID.Zero; | ||
316 | UUID GroupID = UUID.Zero; | ||
317 | UUID.TryParse((string)reader["avatarID"], out Owner); | ||
318 | UUID.TryParse((string)reader["creatorID"], out Creator); | ||
319 | UUID.TryParse((string)reader["groupID"], out GroupID); | ||
320 | item.Owner = Owner; | ||
321 | item.Creator = Creator; | ||
322 | item.GroupID = GroupID; | ||
323 | |||
324 | // Rest of the parsing. If these UUID's fail, we're dead anyway | ||
305 | item.ID = new UUID((string) reader["inventoryID"]); | 325 | item.ID = new UUID((string) reader["inventoryID"]); |
306 | item.AssetID = new UUID((string) reader["assetID"]); | 326 | item.AssetID = new UUID((string) reader["assetID"]); |
307 | item.AssetType = (int) reader["assetType"]; | 327 | item.AssetType = (int) reader["assetType"]; |
308 | item.Folder = new UUID((string) reader["parentFolderID"]); | 328 | item.Folder = new UUID((string) reader["parentFolderID"]); |
309 | item.Owner = new UUID((string) reader["avatarID"]); | ||
310 | item.Name = (string) reader["inventoryName"]; | 329 | item.Name = (string) reader["inventoryName"]; |
311 | item.Description = (string) reader["inventoryDescription"]; | 330 | item.Description = (string) reader["inventoryDescription"]; |
312 | item.NextPermissions = (uint) reader["inventoryNextPermissions"]; | 331 | item.NextPermissions = (uint) reader["inventoryNextPermissions"]; |
313 | item.CurrentPermissions = (uint) reader["inventoryCurrentPermissions"]; | 332 | item.CurrentPermissions = (uint) reader["inventoryCurrentPermissions"]; |
314 | item.InvType = (int) reader["invType"]; | 333 | item.InvType = (int) reader["invType"]; |
315 | item.Creator = new UUID((string) reader["creatorID"]); | ||
316 | item.BasePermissions = (uint) reader["inventoryBasePermissions"]; | 334 | item.BasePermissions = (uint) reader["inventoryBasePermissions"]; |
317 | item.EveryOnePermissions = (uint) reader["inventoryEveryOnePermissions"]; | 335 | item.EveryOnePermissions = (uint) reader["inventoryEveryOnePermissions"]; |
318 | item.SalePrice = (int) reader["salePrice"]; | 336 | item.SalePrice = (int) reader["salePrice"]; |
319 | item.SaleType = Convert.ToByte(reader["saleType"]); | 337 | item.SaleType = Convert.ToByte(reader["saleType"]); |
320 | item.CreationDate = (int) reader["creationDate"]; | 338 | item.CreationDate = (int) reader["creationDate"]; |
321 | item.GroupID = new UUID(reader["groupID"].ToString()); | ||
322 | item.GroupOwned = Convert.ToBoolean(reader["groupOwned"]); | 339 | item.GroupOwned = Convert.ToBoolean(reader["groupOwned"]); |
323 | item.Flags = (uint) reader["flags"]; | 340 | item.Flags = (uint) reader["flags"]; |
324 | 341 | ||
@@ -814,8 +831,11 @@ namespace OpenSim.Data.MySQL | |||
814 | 831 | ||
815 | List<InventoryItemBase> list = new List<InventoryItemBase>(); | 832 | List<InventoryItemBase> list = new List<InventoryItemBase>(); |
816 | while (result.Read()) | 833 | while (result.Read()) |
817 | list.Add(readInventoryItem(result)); | 834 | { |
818 | 835 | InventoryItemBase item = readInventoryItem(result); | |
836 | if (item != null) | ||
837 | list.Add(item); | ||
838 | } | ||
819 | return list; | 839 | return list; |
820 | } | 840 | } |
821 | catch (Exception e) | 841 | catch (Exception e) |