about summary refs log tree commit diff
path: root/src/rt/rust_uv.cpp
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-10-31 23:31:11 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-10-31 23:31:11 -0700
commite35cd962a6971a98436da1281c91507a3db07104 (patch)
treec7c4ac5d998a04831fd6faa349081be21a6a7847 /src/rt/rust_uv.cpp
parentd04a58cf2d224f6e0ae69334f90a9013ae2ba35a (diff)
downloadrust-e35cd962a6971a98436da1281c91507a3db07104.tar.gz
rust-e35cd962a6971a98436da1281c91507a3db07104.zip
Drop struct fields if the user destructor fails
This commit changes drop glue generated for structs to use the invoke LLVM
instruction instead of call. What this means is that if the user destructor
triggers an unwinding, then the fields of the struct will still ge dropped.

This is not an attempt to support failing while failing, as that's mostly a
problem of runtime support. This is more of an issue of soundness in making sure
that destructors are appropriately run. The test included fails before this
commit, and only has one call to fail!(), yet it doesn't destroy its struct
fields.
Diffstat (limited to 'src/rt/rust_uv.cpp')
0 files changed, 0 insertions, 0 deletions