RUSTSEC-2021-0049: through: `through` and `through_and` causes a double free if the map function panics

Description

through and through_and take a mutable reference as well as a mapping function to change the provided reference. They do this by calling ptr::read on the reference which duplicates ownership and then calling the mapping function.

If the mapping function panics, both the original object and the one duplicated by ptr::read get dropped, causing a double free.

More Info

https://github.com/gretchenfrage/through/issues/1

Patched Versions