diff --git a/src/RWStepShape/RWStepShape_RWEdgeLoop.cxx b/src/RWStepShape/RWStepShape_RWEdgeLoop.cxx
index dd0097813b..f6cc79a34f 100644
--- a/src/RWStepShape/RWStepShape_RWEdgeLoop.cxx
+++ b/src/RWStepShape/RWStepShape_RWEdgeLoop.cxx
@@ -106,6 +106,11 @@ void RWStepShape_RWEdgeLoop::Check
   Standard_Boolean headToTail = Standard_True;
   //Standard_Boolean noIdentVtx = Standard_True; //szv#4:S4163:12Mar99 unused
   Standard_Integer nbEdg = ent->NbEdgeList();
+  if (nbEdg == 0)
+  {
+    ach->AddFail("Edge loop contains empty edge list");
+    return;
+  }
   Handle(StepShape_OrientedEdge) theOE = ent->EdgeListValue(1);
   Handle(StepShape_Vertex) theVxFrst = theOE->EdgeStart();
   Handle(StepShape_Vertex) theVxLst  = theOE->EdgeEnd();
diff --git a/tests/bugs/step/bug33307 b/tests/bugs/step/bug33307
new file mode 100644
index 0000000000..feeb6be869
--- /dev/null
+++ b/tests/bugs/step/bug33307
@@ -0,0 +1,11 @@
+puts "==================================================="
+puts "0033307: Data Exchange, Step Import - Crash after reading empty edge loop"
+puts "==================================================="
+puts ""
+
+pload XDE OCAF
+
+Close D -silent
+
+ReadStep D [locate_data_file "bug33307.stp"]
+Close D