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
Matthias Hochsteger
b694b4667a rework build system, separate gui and non-gui code
move fieldlines code to meshing dir

move visualization function pointers to meshing directory

DLL_HEADER -> NGGUI_API in visualization lib

move soldata.hpp to meshing

update occ, no freetype necessary anymore
2022-05-05 14:39:31 +02:00
mhochsteger@cerbsim.com
cf59f297a7 use std::filesystem::path 2022-02-23 11:56:00 +01:00
Matthias Hochsteger
cb87362f64 Rename Array to NgArray 2019-07-09 10:39:16 +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
c216e3f3ed vis-library 2014-10-06 09:57:44 +00:00
Joachim Schoeberl
9805ec973a shared pointer 2014-09-09 15:58:35 +00:00
Joachim Schoeberl
e2cf4ea591 closed modules 2014-08-30 00:15:59 +00:00
Joachim Schoeberl
22d054bc89 fix mem-leaks, autoptr geometry 2013-02-26 13:00:06 +00:00
Joachim Schoeberl
d0629955db csg fixes 2013-02-03 14:44:15 +00:00
Joachim Schoeberl
6a1e8f7e97 parallel topology + curved elements 2012-08-20 14:10:23 +00:00
Joachim Schoeberl
f6142d027e 2D facet visualization 2012-04-26 18:22:49 +00:00
Joachim Schoeberl
3d2f7d7457 dll_headers for geometry dll (only 2D yet) 2011-03-03 21:42:20 +00:00
Joachim Schoeberl
d6e04f72ae fix for visual 2011-03-02 21:42:32 +00:00
Joachim Schoeberl
0e5e2c7883 minor adaption 2011-01-20 19:58:57 +00:00
Joachim Schoeberl
b95acb082c geometry restructuring 2011-01-10 20:18:01 +00:00