Issue 17201: Bug in DestroyObjectActivation::objectIsComposite (fuml-rtf) Source: (, ) Nature: Clarification Severity: Significant Summary: Destroying an object (with "isDestroyLinks" = true) can potentially result in an infinite loop, since the loop variable "i" is never incremented. Solution: while (!isComposite & i <= linkFeatureValues.size()) { FeatureValue featureValue = linkFeatureValues.getValue(i-1); if (!featureValue.values.getValue(0).equals(reference) & ((Property)featureValue.feature).aggregation == AggregationKind.composite) { isComposite = true; } i = i + 1; } Resolution: agreed Revised Text: In Subclause 8.6.3.2.7 DestroyObjectActionActivation, in the objectIsComposite operation, add “i = i + 1;” at the end of the while loop Actions taken: February 28, 2012: received issue January 7, 2013: closed issue Discussion: End of Annotations:===== m: webmaster@omg.org To: Subject: Issue/Bug Report ******************************************************************************* Name: Hannes Moesl Employer: University of Innsbruck mailFrom: hannes.moesl@uibk.ac.at Terms_Agreement: I agree Specification: Semantics of a Foundational Subset for Executable UML Models (fUML) Section: 8.6.3.2.7 FormalNumber: formal/2011-02-01 Version: 1.0 Doc_Year: 2011 Doc_Month: January Doc_Day: Day Page: 300 Title: Bug in DestroyObjectActivation::objectIsComposite Nature: Clarification Severity: Significant CODE: 3TMw8 B1: Report Issue Description: Destroying an object (with "isDestroyLinks" = true) can potentially result in an infinite loop, since the loop variable "i" is never incremented. Solution: while (!isComposite & i <= linkFeatureValues.size()) { FeatureValue featureValue = linkFeatureValues.getValue(i-1); if (!featureValue.values.getValue(0).equals(reference) & ((Property)featureValue.feature).aggregation == AggregationKind.composite) { isComposite = true; } i = i + 1; }