From 944cd18c6ba4190bd5681b79569707b5ad5206cd Mon Sep 17 00:00:00 2001 From: Kathy Date: Thu, 4 May 2017 14:10:23 +0000 Subject: [PATCH] B2017-081: crash on insert of supplemental information (cached item was of wrong type) --- PROMS/Volian.Controls.Library/MostRecentItem.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/PROMS/Volian.Controls.Library/MostRecentItem.cs b/PROMS/Volian.Controls.Library/MostRecentItem.cs index bc77ab57..8b64c8fc 100644 --- a/PROMS/Volian.Controls.Library/MostRecentItem.cs +++ b/PROMS/Volian.Controls.Library/MostRecentItem.cs @@ -194,11 +194,21 @@ namespace Volian.Controls.Library { return string.Format("{0}~{1}~{2}", _ItemID, MenuTitle, ToolTip); } + private static ItemInfo GetCorrectItemInfoType(int itemId) + { + using (ItemInfo itm = ItemInfo.Get(itemId)) + { + if (itm.IsProcedure) return ProcedureInfo.Get(itemId); + if (itm.IsSection) return SectionInfo.Get(itemId); + if (itm.IsStep) return StepInfo.Get(itemId); + } + return ItemInfo.Get(itemId); + } public static MostRecentItem ParseString(string str) { string[] parts = str.Split("~".ToCharArray()); int itemID = int.Parse(parts[0]); - ItemInfo item = ItemInfo.Get(itemID); + ItemInfo item = GetCorrectItemInfoType(itemID); if (item == null) return null; if (parts.Length > 1 && parts[1] != item.Path && !RetainBadMRIs()) return null; // Path doesn't match