13
0
livetrax/libs/lua
Robin Gareus 3da07e6736
Special case Lua copy-construction of trackable instances
This fixes an crashing issue with ArdourUI.SelectionList a bug
introduced in 6dc3bdf252 and 35dcd46d7d.

Since removal of the special cases in 35dcd46d7d, when using
a C-pointer in a std::list<>,
  std::list<class*>::push_back(TypeListValue)
TypeListValues<>'s Head was expanded to  "class*& const"
implied by void ::push_back(const T& value);

This resulted in lifetime issues with a classes that derive
from sigc::trackable (e.g. Ardour's Selection).
The reference leaves scope and isn't duplicated when it is pushed back
to the std::list<>.

The script scripts/select_every_2nd_region.lua crashed because entries
in the SelectionList were no longer valid.

Previously (before 6dc3bdf252) TypeListValues explicitly
copy-constructed the value to work around the lifetime issue.
This new solution bypasses the issue by directly using the c-pointer
without dereferencing it.
2019-04-12 05:45:27 +02:00
..
lua Tweak Lua GC 2017-11-29 12:06:42 +01:00
lua-5.3.4 Customize Lua GC, add object-memory-lock API. 2018-03-19 02:23:09 +01:00
LuaBridge Special case Lua copy-construction of trackable instances 2019-04-12 05:45:27 +02:00
MSVClua Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs) 2018-09-30 08:56:12 +01:00
lua.cc update to lua-5.3.4 2017-11-29 12:06:42 +01:00
luastate.cc Allow loadfile in non-rt scripts 2018-03-06 21:47:30 +01:00
wscript remove use of hardcoded -fPIC compiler flag, and use compiler flag dict instead 2018-10-14 22:06:11 -04:00