0027620: Test perf bop boxholes crashes DRAW IR-2018-11-23 IR-WEEK47
authorabv <abv@opencascade.com>
Sat, 17 Nov 2018 09:51:26 +0000 (12:51 +0300)
committerapn <apn@opencascade.com>
Fri, 23 Nov 2018 09:18:42 +0000 (12:18 +0300)
commite05c25c1235d8740cde1a49bf43f6a4bad916c88
treedbe908d35be35deee179ffbde5b1d465bf60ffee
parent0df4bbd689e4640edc03a46235f2bc398c0c5b12
0027620: Test perf bop boxholes crashes DRAW

Implementation of capturing of output to standard streams in DRAW (see command dlog) is revised to avoid problems with command "test" executing long test scripts:

1. Method OSD_File::Capture() is removed: on Windows it was allocating a C file descriptor for a file opened using WinAPI, and never released that descriptor (once allocated, it cannot be released separately from WinAPI file handle). Direct calls to dup/dup2 are used instead.

2. In Draw_Window.cxx the standard Tcl channels are initialized manually using corrected version of Tcl internal function. This works around a problem with Tcl channels on Windows being bound to OS device handle owned by the system which can get invalidated as result of calls to dup2() (used to capture output to standard streams).

3. Temporary file for capturing is opened once and used to store whole log, thus the need to collect log in the string stream in memory is avoided

4. Possible errors of dup() and dup2() are checked and reported

Test demo draw dlog is added

Off-topic changes:

- Test demo draw getsource is corrected for VS2017 which generates file name in lowercase
- Field myFaceBounds is initialized in constructor of the class BRepAlgo_NormalProjection to avoid undefined behavior
- Test bugs modalg_5 bug24012 is corrected to use command nproject instead of custom one, and to check propertes of the resulting shape
src/BRepAlgo/BRepAlgo_NormalProjection.cxx
src/Draw/Draw_BasicCommands.cxx
src/Draw/Draw_Interpretor.cxx
src/Draw/Draw_Interpretor.hxx
src/Draw/Draw_Window.cxx
src/OSD/OSD_File.cxx
src/OSD/OSD_File.hxx
src/QABugs/QABugs_19.cxx
tests/bugs/modalg_5/bug24012
tests/demo/draw/dlog [new file with mode: 0644]
tests/demo/draw/getsource