11 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
Joachim Schoeberl
42ea36b932 opengl/tcl structure 2014-10-08 12:46:25 +00:00
Joachim Schoeberl
3d7092e8b3 fix LoadGeometry in nglib (geom2d, stl) 2013-01-17 12:41:57 +00:00
Joachim Schoeberl
ad3b2f5300 geom2d as dll 2011-03-03 22:03:01 +00:00
Joachim Schoeberl
3d2f7d7457 dll_headers for geometry dll (only 2D yet) 2011-03-03 21:42:20 +00:00
Joachim Schoeberl
807d091d9e header files 2011-02-28 14:17:25 +00:00
Joachim Schoeberl
6e5e049905 geom2d fixes 2011-02-28 13:34:54 +00:00
Joachim Schoeberl
5204be0657 spline files restructured 2011-02-28 12:59:27 +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