0025153: Retrieval of arguments of selection crashes the application
authorvro <vro@opencascade.com>
Thu, 21 Aug 2014 08:33:57 +0000 (12:33 +0400)
committerbugmaster <bugmaster@opencascade.com>
Thu, 21 Aug 2014 11:51:13 +0000 (15:51 +0400)
A check on NULL is added into TDF_Tool::OutReferences() static methods.

Test cases for issue CR25153

src/TDF/TDF_Tool.cxx
tests/bugs/caf/bug25153 [new file with mode: 0644]

index 7f19dfe..fc7e576 100644 (file)
@@ -248,10 +248,13 @@ static void TDF_Tool_OutReferers(const TDF_Label& aRefLabel,
       // const Handle(TDF_Attribute)& att = attMItr.Key();
       Handle(TDF_Attribute) att = attMItr.Key();
       // ENDCLE
-      if (aFilterForReferences.IsKept(att) && !att->Label().IsDescendant(aRefLabel)) {
-       atts.Add(itr.Value());
-       outRefFound = Standard_True;
-       break;
+      if (aFilterForReferences.IsKept(att) &&
+          !att->Label().IsNull() &&
+          !att->Label().IsDescendant(aRefLabel))
+      {
+        atts.Add(itr.Value());
+        outRefFound = Standard_True;
+        break;
       }
     }
 
@@ -318,8 +321,11 @@ static void TDF_Tool_OutReferences(const TDF_Label& aRefLabel,
     const TDF_AttributeMap& attMap = ds->Attributes();
     for (TDF_MapIteratorOfAttributeMap attMItr(attMap);attMItr.More();attMItr.Next()) {
       Handle(TDF_Attribute) att = attMItr.Key();
-      if (aFilterForReferences.IsKept(att) && !att->Label().IsDescendant(aRefLabel)) {
-       atts.Add(att);
+      if (aFilterForReferences.IsKept(att) &&
+          !att->Label().IsNull() &&
+          !att->Label().IsDescendant(aRefLabel))
+      {
+        atts.Add(att);
       }
     }
     const TDF_LabelMap& labMap = ds->Labels();
diff --git a/tests/bugs/caf/bug25153 b/tests/bugs/caf/bug25153
new file mode 100644 (file)
index 0000000..58c429a
--- /dev/null
@@ -0,0 +1,16 @@
+puts "=========="
+puts "OCC25123"
+puts "=========="
+puts ""
+###################################################
+# Retrieval of arguments of selection crashes the application
+###################################################
+
+plane p 0 0 0 0 0 1
+mkface f p -100 100 -100 100
+
+NewDocument D XmlOcaf
+ImportShape D 0:1 f
+SelectShape D 0:2 f
+ForgetAll D 0:1
+ArgsSelection D 0:2