Revision: 48390
          http://brlcad.svn.sourceforge.net/brlcad/?rev=48390&view=rev
Author:   indianlarry
Date:     2012-01-11 15:46:11 +0000 (Wed, 11 Jan 2012)
Log Message:
-----------
Added check for NULL before using entiry field to resolve FORWARD_NULL issue 
from coverity. Relates to CIDs: 1844-5

Modified Paths:
--------------
    brlcad/trunk/src/conv/step/EdgeCurve.cpp
    brlcad/trunk/src/conv/step/OrientedEdge.cpp

Modified: brlcad/trunk/src/conv/step/EdgeCurve.cpp
===================================================================
--- brlcad/trunk/src/conv/step/EdgeCurve.cpp    2012-01-11 15:37:23 UTC (rev 
48389)
+++ brlcad/trunk/src/conv/step/EdgeCurve.cpp    2012-01-11 15:46:11 UTC (rev 
48390)
@@ -75,17 +75,26 @@
 
     if (edge_geometry == NULL) {
        SCLP23(Application_instance) *entity = 
step->getEntityAttribute(sse,"edge_geometry");
-       edge_geometry = dynamic_cast<Curve 
*>(Factory::CreateObject(sw,entity)); //CreateCurveObject(sw,entity));
-    }
+       if (entity) {
+           edge_geometry = dynamic_cast<Curve 
*>(Factory::CreateObject(sw,entity)); //CreateCurveObject(sw,entity));
+           if (edge_geometry != NULL) {
+               same_sense = step->getBooleanAttribute(sse,"same_sense");
 
-    same_sense = step->getBooleanAttribute(sse,"same_sense");
-
-    if (same_sense) {
-       edge_geometry->Start(edge_start);
-       edge_geometry->End(edge_end);
-    } else {
-       edge_geometry->Start(edge_end);
-       edge_geometry->End(edge_start);
+               if (same_sense) {
+                   edge_geometry->Start(edge_start);
+                   edge_geometry->End(edge_end);
+               } else {
+                   edge_geometry->Start(edge_end);
+                   edge_geometry->End(edge_start);
+               }
+           } else {
+               std::cout << CLASSNAME << ":Error loading field 
\"edge_geometry\"." << std::endl;
+               return false;
+           }
+       } else {
+           std::cout << CLASSNAME << ":Error loading field \"edge_geometry\"." 
<< std::endl;
+           return false;
+       }
     }
 
     return true;

Modified: brlcad/trunk/src/conv/step/OrientedEdge.cpp
===================================================================
--- brlcad/trunk/src/conv/step/OrientedEdge.cpp 2012-01-11 15:37:23 UTC (rev 
48389)
+++ brlcad/trunk/src/conv/step/OrientedEdge.cpp 2012-01-11 15:46:11 UTC (rev 
48390)
@@ -73,12 +73,17 @@
        SCLP23(Application_instance) *entity = 
step->getEntityAttribute(sse,"edge_element");
        if (entity) {
            edge_element = dynamic_cast<Edge 
*>(Factory::CreateObject(sw,entity));
-           if (orientation == BTrue) {
-               edge_start = edge_element->GetEdgeStart();
-               edge_end = edge_element->GetEdgeEnd();
+           if (edge_element != NULL) {
+               if (orientation == BTrue) {
+                   edge_start = edge_element->GetEdgeStart();
+                   edge_end = edge_element->GetEdgeEnd();
+               } else {
+                   edge_start = edge_element->GetEdgeEnd();
+                   edge_end = edge_element->GetEdgeStart();
+               }
            } else {
-               edge_start = edge_element->GetEdgeEnd();
-               edge_end = edge_element->GetEdgeStart();
+               std::cerr << CLASSNAME << ": Error loading entity attribute 
'edge_element'." << std::endl;
+               return false;
            }
        } else {
            std::cerr << CLASSNAME << ": Error loading entity attribute 
'edge_element'." << std::endl;

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to