From afccf69cb76e13b939a754c3acbe603ed7153fed Mon Sep 17 00:00:00 2001 From: Pasukhin Dmitry Date: Sat, 16 Aug 2025 09:24:21 +0100 Subject: [PATCH] Data Exchange, STP - Crash on empty list (#671) Added condition to always allocate an array in case of empty list --- .../TKDESTEP/StepData/StepData_StepReaderData.cxx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/DataExchange/TKDESTEP/StepData/StepData_StepReaderData.cxx b/src/DataExchange/TKDESTEP/StepData/StepData_StepReaderData.cxx index 6d55f967c0..8bdb3b113c 100644 --- a/src/DataExchange/TKDESTEP/StepData/StepData_StepReaderData.cxx +++ b/src/DataExchange/TKDESTEP/StepData/StepData_StepReaderData.cxx @@ -688,7 +688,14 @@ Standard_Boolean StepData_StepReaderData::ReadSubList(const Standard_Integer n numsub = SubListNumber(num, nump, Standard_False); if (numsub > 0) { - return (NbParams(numsub) > 0); + const Standard_Integer aNbParams = NbParams(numsub); + if (aNbParams == 0) + { + Handle(String) anErrMess = new String("Parameter n0.%d (%s) is an empty LIST"); + sprintf(txtmes, anErrMess->ToCString(), nump, mess); + ach->AddWarning(txtmes, anErrMess->ToCString()); + } + return Standard_True; } // Si optionel indefini, on passe l eponge numsub = 0;