From 1c24c3cfb6ed9584409f20441ae977ba730f41a9 Mon Sep 17 00:00:00 2001 From: Rebecca Williams Date: Fri, 8 May 2026 09:29:17 +0100 Subject: [PATCH 1/2] Add condition to avoid unnecessary exception Even though the exception is caught and ignored, it still slows down the widget creation and can cause a race condition with macro expansion. --- .../csstudio/display/builder/model/widgets/SymbolWidget.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SymbolWidget.java b/app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SymbolWidget.java index ee5b473f16..46cd519064 100644 --- a/app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SymbolWidget.java +++ b/app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SymbolWidget.java @@ -100,7 +100,7 @@ public Widget createWidget ( ) { (widget, index) -> { String symbol = DEFAULT_SYMBOL; try { - if (index > 0) + if (index > 0 && index <= ((SymbolWidget)widget).propSymbols().size()) symbol = ((SymbolWidget)widget).propSymbols().getElement(index - 1).getValue(); } catch (IndexOutOfBoundsException e) { // It is expected when a widget with more than 2 symbols is parsed From 3229aee6db9fa86ee5dfd51529ab502944c9812a Mon Sep 17 00:00:00 2001 From: Rebecca Williams Date: Fri, 8 May 2026 11:43:07 +0100 Subject: [PATCH 2/2] Remove try-catch which is no longer needed The updated if statement will ensure we don't have an out of bounds exception thrown. --- .../display/builder/model/widgets/SymbolWidget.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SymbolWidget.java b/app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SymbolWidget.java index 46cd519064..259673d87f 100644 --- a/app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SymbolWidget.java +++ b/app/display/model/src/main/java/org/csstudio/display/builder/model/widgets/SymbolWidget.java @@ -99,13 +99,8 @@ public Widget createWidget ( ) { Messages.WidgetProperties_Symbols, (widget, index) -> { String symbol = DEFAULT_SYMBOL; - try { - if (index > 0 && index <= ((SymbolWidget)widget).propSymbols().size()) - symbol = ((SymbolWidget)widget).propSymbols().getElement(index - 1).getValue(); - } catch (IndexOutOfBoundsException e) { - // It is expected when a widget with more than 2 symbols is parsed - // and the property is being populated --> safe to ignore - } + if (index > 0 && index <= ((SymbolWidget)widget).propSymbols().size()) + symbol = ((SymbolWidget)widget).propSymbols().getElement(index - 1).getValue(); return propSymbol(index).createProperty(widget, symbol); }, 0