Anonymous | Login | 2021-02-26 18:43 MSK | ![]() |
My View | View Issues | Change Log | Roadmap |
View Revisions: Issue #31970 | [ All Revisions ] [ Back to Issue ] | ||
Summary | 0031970: Data Exchange, STEP reader - parser syntax error messages are inaccessible | ||
Revision | 2020-12-02 12:26 by kgv | ||
Description | Reading STEP file with syntax errors produced the following output on OCCT 6.7.1:... Step File Reading : c:/workssd/test2.stp **** StepFile Error : At line 20, syntax error **** ... STEP File Read ... ... Step File loaded ... 569 records (entities,sub-lists,scopes), 1386 parameters *** ERR StepReaderData *** Pour Entite #5 Type:PRODUCT_DEFINITION Param.n0 4: 0000009 Non trouve ... Parameters prepared ... Report : 1 unknown entities. ... Objets analysed ... STEP Loading done : 349 Entities Status from reading STEP file c:/workssd/test2.stp : file read Count of shapes produced : 1 so that user see at which line syntax error occurred. Since OCCT 6.8.0 (0025418) the output is like that: *** ERR StepReaderData *** Pour Entite #5 Type:PRODUCT_DEFINITION Param.n0 4: 0000009 Non trouve Report : 1 unknown entities. Status from reading STEP file c:/workssd/test2.stp : file read Count of shapes produced : 1 so user sees only that something was wrong without enough details. Lost message is passed to StepFile_Interrupt() which is no more logged in by default (without OCCT_DEBUG macros) and called to a local dummy variable "checkread" of type Interface_Check which is inaccessible outside: void StepFile_Interrupt (char* mess) { #ifdef OCCT_DEBUG Message_Messenger::StreamBuffer sout = Message::SendInfo(); sout << " **** StepFile Error : " << mess << " ****" << std::endl; #endif checkread->AddFail(mess); } It is proposed reconsidering OCCT_DEBUG usage in this context and instead print such valuable message with Trace level instead. The usage of global non thread-safe variable and inaccessible anywhere "checkread" should be also checked. |
||
Revision | 2020-12-02 12:24 by kgv | ||
Description | Reading STEP file with syntax errors produced the following output on OCCT 6.7.1:... Step File Reading : c:/workssd/test2.stp **** StepFile Error : At line 20, syntax error **** ... STEP File Read ... ... Step File loaded ... 569 records (entities,sub-lists,scopes), 1386 parameters *** ERR StepReaderData *** Pour Entite #5 Type:PRODUCT_DEFINITION Param.n0 4: 0000009 Non trouve ... Parameters prepared ... Report : 1 unknown entities. ... Objets analysed ... STEP Loading done : 349 Entities Status from reading STEP file c:/workssd/test2.stp : file read Count of shapes produced : 1 so that user see at which line syntax error occurred. Since OCCT 6.8.0 the output is like that: *** ERR StepReaderData *** Pour Entite #5 Type:PRODUCT_DEFINITION Param.n0 4: 0000009 Non trouve Report : 1 unknown entities. Status from reading STEP file c:/workssd/test2.stp : file read Count of shapes produced : 1 so user sees only that something was wrong without enough details. Lost message is passed to StepFile_Interrupt() which is no more logged in by default (without OCCT_DEBUG macros) and called to a local dummy variable "checkread" of type Interface_Check which is inaccessible outside: void StepFile_Interrupt (char* mess) { #ifdef OCCT_DEBUG Message_Messenger::StreamBuffer sout = Message::SendInfo(); sout << " **** StepFile Error : " << mess << " ****" << std::endl; #endif checkread->AddFail(mess); } It is proposed reconsidering OCCT_DEBUG usage in this context and instead print such valuable message with Trace level instead. The usage of global non thread-safe variable and inaccessible anywhere "checkread" should be also checked. |
Copyright © 2000 - 2021 MantisBT Team |