25 Mar
2013
25 Mar
'13
7:12 p.m.
When streaming unrelated fusion sets to unrelated ostringstreams from different threads, I get an invalid iterator error. This appears to be due to using a boost::fusion::detail::stream_data::attach's local static arena instance. static void attach(Stream& stream, T const& data) { static arena ar; // our arena ar.data.push_back(new T(data)); stream.pword(get_xalloc_index<Tag>()) = ar.data.back(); } I assume there are issues with using the unguarded stream_data::data std::vector<T*> from multiple threads. This implementation looks problematic in that the arena data does not get cleaned up until program exit as well. Jeff