Commit Graph

17 Commits

Author SHA1 Message Date
Monty Montgomery
de7ffc5906 Eliminate a "C++ initialization order fiasco" for geometryregister
Current initialization of the global geometryregister suffers from a
classic 'initialization order fiasco'.  Depending on the order the
compilation units are loaded/linked, the initialization of the global
geometryregisterarray is not guaranteed to happen (and indeed often
does not happen) before it is used.  This leads to entries being
appended before it's initialized (usually 'suceeding, but potentially
causing memory corruption if the segment at that point isn't zeroed),
initialization then happening halfway through (wiping the initial
entries) and then the last entries being the only ones that show up.

The net effect is either a crash at startup, or several geometry types
seeming to be missing.  Eg, step files will oad, but STL files are
just ignored.  The bug is actively observed on, eg, Linux.

This patch implements a simple 'initialize at first access' convention
for the array, eliminating the ordering problem.

I've not reviewed the rest of the source for other potential examples
of the fiasco pattern; this fixes only the geometryregister, since
that was actively biting.
2022-05-22 11:29:10 -04:00
mhochsteger@cerbsim.com
cf59f297a7 use std::filesystem::path 2022-02-23 11:56:00 +01:00
Christopher Lackner
073e215bb6 add closeedge meshsize to base geometry (not used)
closedgefac moved to meshingparameters for this
2019-11-04 19:34:46 +01:00
Matthias Hochsteger
4deffe6cbe Button to write selected chart to separate .stlb file 2019-09-24 13:09:49 +02:00
Christopher Lackner
0e3636436d dll header 2019-08-06 20:45:15 +02:00
Christopher Lackner
a9039ac334 remove wrong dll header 2019-08-06 20:23:18 +02:00
Christopher Lackner
1bc2e1f5a7 global stl parameters only visible in nglib, stlparameters from python 2019-08-06 12:16:30 +02:00
Christopher Lackner
fc1a3da429 meshingparameter only visible in nglib and const ref to funcs 2019-08-06 10:42:53 +02:00
Christopher Lackner
218bd4c5d2 start work on stlparam from python, strange bad any cast exception 2019-08-02 16:22:53 +02:00
Matthias Hochsteger
8ac965d707 everything in one big dll on Windows 2015-10-19 10:08:30 +02:00
Joachim Schoeberl
42ea36b932 opengl/tcl structure 2014-10-08 12:46:25 +00:00
Joachim Schoeberl
9805ec973a shared pointer 2014-09-09 15:58:35 +00:00
Gerhard Kitzler
4370277c1e AutoPtr 2013-02-27 15:11:46 +00:00
Joachim Schoeberl
3d7092e8b3 fix LoadGeometry in nglib (geom2d, stl) 2013-01-17 12:41:57 +00:00
Joachim Schoeberl
a582fc6231 on the way to thread-save meshing 2011-07-25 08:40:23 +00:00
Joachim Schoeberl
55282bac84 geometry format modularization 2011-02-18 22:50:58 +00:00
Joachim Schoeberl
b95acb082c geometry restructuring 2011-01-10 20:18:01 +00:00