Make attributes robust to static init orderings (#2295)
authorAndres Noetzli <andres.noetzli@gmail.com>
Sat, 11 Aug 2018 18:13:17 +0000 (11:13 -0700)
committerGitHub <noreply@github.com>
Sat, 11 Aug 2018 18:13:17 +0000 (11:13 -0700)
commitb62055f1204a0846eef728b2b62e5fc77df4048c
tree41fe58fb6a5f3dd5815785304990282c6a3abefc
parent8a8d65e2fddf88bfbd6cc67d8738510feaea05e6
Make attributes robust to static init orderings (#2295)

@taking pointed out that part of the issue fixed in #2293 is also that
we should be more robust to different (de-)initialization orders. A
common, portable way to achieve this is to allocate the object in
question on the heap and make the pointer to it static [0]. This commit
fixes the variable in question.

I have tested this fix in ASAN (without using --no-static-init flag for
CxxTest) and it works.

[0] https://isocpp.org/wiki/faq/ctors#construct-on-first-use-v2
src/expr/attribute_internals.h