memory leak in boost::iostreams::detail::chain_impl::~chain_impl()

Description

It appears that there are some cases when the chain_impl::close() (boost/iostreams/chain.hpp) throws an exception. If it is invoked from

~chain_impl() { try { close(); reset(); } catch (...) { } }

the following reset() method won't be invoked and it results in memory leak because of there is a delete buf; invokation in the reset().
Patch file is attached.

Also I have managed to produce such a situation (example is attached).
Below shows that the gzip_decompressor was constructed 4 times (1 time by default constructor and 3 times by copy constructor), but destroyed only 3 times. Destructor for object at 0x4e46b98 wasn't invoked.