Commit Graph

12 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
Matthias Hochsteger
b2fea6dec1 Clean up multiple definitions of DLL_HEADER
- define DLL_HEADER only once in mydefs.hpp
- define/use NGLIB_API in nglib.h
- use NGCORE_API_EXPORT for explicit export of symbols
2021-02-18 14:53:38 +01:00
Joachim Schöberl
9b13bde72b more STLPointId ... 2019-09-21 02:04:50 +02:00
Matthias Hochsteger
cb87362f64 Rename Array to NgArray 2019-07-09 10:39:16 +02:00
Matthias Hochsteger
1430b89e39 Update pybind11 to version 2.2.0
- Replace PYBIND11_PLUGIN with PYBIND11_MODULE

- Fix warnings about symbol visibility by replacing
  'namespace pybind11' with 'namespace PYBIND11_NAMESPACE'

- Pybind sets the default visibility of its namespace to 'hidden'
  Thus, our export functions like  ExportCSG(py::module &m) also are
  hidden by default. To work around that define DLL_HEADER
  '__attribute__ ((visibility ("default")))
  on GNUC platforms.
2017-09-01 10:16:56 +02:00
Christopher Lackner
e16dfde5e7 fix libstlvis 2016-12-12 14:26:49 +01:00
Christopher Lackner
2649726692 fix DLL_HEADER export 2016-12-12 14:22:24 +01:00
Christopher Lackner
a5e411d008 load stl fix and some vis 2016-12-12 13:14:47 +01:00
Gerhard Kitzler
b4fbca16eb changed Autoptr to shared_ptr 2014-09-09 16:15:31 +00:00
Joachim Schoeberl
725a714bf3 dbl-clk function with point coordinates 2014-02-12 15:13:35 +00:00
Joachim Schoeberl
b95acb082c geometry restructuring 2011-01-10 20:18:01 +00:00