27 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
bd29763b16 Add std::any to py::object caster for archive registered types 2021-09-28 22:34:11 +02:00
Christopher Lackner
9d48602a2a Add NetgenGeometry.RestrictH function 2021-09-08 22:12:45 +02:00
Christopher Lackner
1b1c4700ad geo GetNormal and ProjectPointEdge with geoinfo pointer 2019-11-04 11:27:01 +01:00
Christopher Lackner
fa3ae333ce delete trailing whitespaces in new commits 2019-10-07 15:17:03 +02:00
Christopher Lackner
05881c0eb5 refactor a lot of the old code, stl still needs to be done 2019-10-07 15:17:03 +02:00
Matthias Hochsteger
cb87362f64 Rename Array to NgArray 2019-07-09 10:39:16 +02:00
Christopher Lackner
d19b1ec35f allow setting of maxh in old in2d files 2019-05-17 16:23:16 +02:00
Christopher Lackner
099acc9fa1 pickling for all geometry types 2018-12-14 12:01:58 +01:00
luz.paz
58002505bc Typos
Found via `codespell`
2018-01-14 12:18:54 -05:00
Christopher Lackner
7e4892a9e7 firststep and laststep as meshingparameters to be exported to python 2016-12-05 13:50:21 +01:00
Joachim Schöberl
ba838e39dc remove debug output 2015-11-02 17:02:25 +01:00
Joachim Schöberl
5bcf28d196 mesh size and bcnames for 2d geometries 2015-10-30 19:50:40 +01:00
Joachim Schöberl
c4b532aac2 set 2d maxh 2015-10-21 18:06:12 +02:00
Joachim Schöberl
105111f5c9 materials in 2D 2015-09-12 15:02:56 +02:00
Joachim Schoeberl
4dda85ac90 python, shared ptr 2014-09-25 20:23:31 +00:00
Joachim Schoeberl
36a470fe04 bix maxh 2014-01-07 10:12:42 +00:00
Joachim Schoeberl
22d054bc89 fix mem-leaks, autoptr geometry 2013-02-26 13:00:06 +00:00
Joachim Schoeberl
be7274b29e v2 format fix 2013-02-03 14:42:19 +00:00
Joachim Schoeberl
3d7092e8b3 fix LoadGeometry in nglib (geom2d, stl) 2013-01-17 12:41:57 +00:00
Joachim Schoeberl
2637b547b5 automatic 2d mesh-size control 2012-08-28 10:36:58 +00:00
Joachim Schoeberl
4dcae7ec4d local refinement for 2d curves 2012-08-27 16:07:27 +00:00
Joachim Schoeberl
0291271c05 B-spline curves in 2D geometry 2011-09-01 16:40:00 +00:00
Joachim Schoeberl
63022fe1b9 bux fix: geometry load circle 2011-04-28 18:36:03 +00:00
Joachim Schoeberl
807d091d9e header files 2011-02-28 14:17:25 +00:00
Joachim Schoeberl
e16ddbc83b move splines 2011-02-28 13:19:34 +00:00