about summary refs log tree commit diff
path: root/src/libstd/sys/unix/stack_overflow.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-09-06 17:55:04 +0000
committerbors <bors@rust-lang.org>2015-09-06 17:55:04 +0000
commita269e31a30446bb0dc4ae36d170e507e31188bfe (patch)
tree8f3a2282a4f196a0339ddf2e614d0392edd103ba /src/libstd/sys/unix/stack_overflow.rs
parentf84d53ca0afaeac14903d16ab24455f6170795e1 (diff)
parent97dd25094cb1f6575aca71cbe2329382594a8b5e (diff)
downloadrust-a269e31a30446bb0dc4ae36d170e507e31188bfe.tar.gz
rust-a269e31a30446bb0dc4ae36d170e507e31188bfe.zip
Auto merge of #28265 - boblehest:master, r=bluss
In the last code snippet on the following page there is a bug in the
implementation of Vec::drain().

https://doc.rust-lang.org/nightly/nomicon/vec-drain.html

```rust
pub fn drain(&mut self) -> Drain<T> {
    // Oops, setting it to 0 while we still need the old value!
    self.len = 0;

    unsafe {
        Drain {
            // len is used to create a &[T] from &self here,
            // so we end up always creating an empty slice.
            iter: RawValIter::new(&self),
            vec: PhantomData,
        }
    }
}
```

A simple test to verify that Drain is broken can be found here:
https://play.rust-lang.org/?gist=30f579565e4bbf4836ce&version=nightly

And here's one with a fixed implementation:
https://play.rust-lang.org/?gist=2ec0c1a6dcf5defd7a53&version=nightly
Diffstat (limited to 'src/libstd/sys/unix/stack_overflow.rs')
0 files changed, 0 insertions, 0 deletions