diff options
| author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2015-04-14 19:11:26 -0700 | 
|---|---|---|
| committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2015-04-14 19:11:26 -0700 | 
| commit | 2badcbb6743ff803c9cd82db77a1d8a50802058f (patch) | |
| tree | 83d6753d930ea72bec96158b358433573a5ffae1 | |
| parent | e977f04fe221d56bac2f0f18d81a1934f6754cb5 (diff) | |
Explicitly call xml_buffered_writer::flush()
If xml_writer::write throws an exception while being called from flush(), the
exception is thrown from destructor. Clang in C++11 mode calls std::terminate
in this case.
| -rw-r--r-- | src/pugixml.cpp | 9 | 
1 files changed, 4 insertions, 5 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 590d07f..1c1b539 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -3115,11 +3115,6 @@ PUGI__NS_BEGIN  			PUGI__STATIC_ASSERT(bufcapacity >= 8);  		} -		~xml_buffered_writer() -		{ -			flush(); -		} -  		size_t flush()  		{  			flush(buffer, bufsize); @@ -5496,6 +5491,8 @@ namespace pugi  		impl::xml_buffered_writer buffered_writer(writer, encoding);  		impl::node_output(buffered_writer, _root, indent, flags, depth); + +		buffered_writer.flush();  	}  #ifndef PUGIXML_NO_STL @@ -6205,6 +6202,8 @@ namespace pugi  		}  		impl::node_output(buffered_writer, _root, indent, flags, 0); + +		buffered_writer.flush();  	}  #ifndef PUGIXML_NO_STL  | 
