Ticket #5876: ATest.cpp

File ATest.cpp, 1.1 KB (added by ybungalobill@…, 11 years ago)

code demonstrating the problem

Line 
1#include "stdafx.h"
2
3struct X
4{
5 int x;
6
7 template<class Archive>
8 void serialize(Archive & ar, const unsigned int /*file_version*/)
9 {
10 ar & x;
11 }
12};
13
14BOOST_CLASS_IMPLEMENTATION(X, boost::serialization::object_serializable)
15
16template<class T>
17void BoostLoad(const char* fileName, T& obj)
18{
19 std::ifstream ifs(fileName, std::ios_base::binary);
20 boost::archive::binary_iarchive ia(ifs);
21 ia >> obj;
22}
23
24template<class T>
25void BoostSave(const char* fileName, T& obj)
26{
27 std::ofstream ofs(fileName, std::ios_base::binary);
28 boost::archive::binary_oarchive oa(ofs);
29 oa << obj;
30}
31
32int main()
33{
34 // instructions:
35 // 1) uncomment this and run to create the file
36 // 2) comment this and run to see that x2 is loaded correctly
37 // 3) enable the below code by changing to #if 1 and run to see that x2 is loaded incorrectly.
38
39 //X x1 = { 0x31415926 };
40 //BoostSave("SerializationBug.dat", x1);
41
42 X x2;
43 BoostLoad("SerializationBug.dat", x2);
44
45#if 0
46 volatile int x = 0;
47 if(x)
48 {
49 X *x3;
50 BoostLoad("this code is never executed", x3);
51 }
52#endif
53}