Skip to content

Commit 2446f26

Browse files
committed
---
yaml --- r: 30004 b: refs/heads/incoming c: fe25667 h: refs/heads/master v: v3
1 parent b262685 commit 2446f26

File tree

3 files changed

+10
-24
lines changed

3 files changed

+10
-24
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: d0c6ce338884ee21843f4b40bf6bf18d222ce5df
9-
refs/heads/incoming: 20773f33f522ac7686e0ac7271332646e9944938
9+
refs/heads/incoming: fe2566777dae60b21fbea9173e6f31881da78ffb
1010
refs/heads/dist-snap: 2f32a1581f522e524009138b33b1c7049ced668d
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/incoming/src/libcore/pipes.rs

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -666,12 +666,10 @@ fn select2<A: send, Ab: send, B: send, Bb: send>(
666666
{
667667
let i = wait_many([a.header(), b.header()]/_);
668668

669-
unsafe {
670-
match i {
671-
0 => Left((try_recv(a), b)),
672-
1 => Right((a, try_recv(b))),
673-
_ => fail ~"select2 return an invalid packet"
674-
}
669+
match i {
670+
0 => Left((try_recv(a), b)),
671+
1 => Right((a, try_recv(b))),
672+
_ => fail ~"select2 return an invalid packet"
675673
}
676674
}
677675

@@ -706,17 +704,9 @@ fn select<T: send, Tb: send>(+endpoints: ~[recv_packet_buffered<T, Tb>])
706704
-> (uint, option<T>, ~[recv_packet_buffered<T, Tb>])
707705
{
708706
let ready = wait_many(endpoints.map(|p| p.header()));
709-
let mut remaining = ~[];
710-
let mut result = none;
711-
do vec::consume(endpoints) |i, p| {
712-
if i == ready {
713-
result = try_recv(p);
714-
}
715-
else {
716-
vec::push(remaining, p);
717-
}
718-
}
719-
707+
let mut remaining = endpoints;
708+
let port = vec::swap_remove(remaining, ready);
709+
let result = try_recv(port);
720710
(ready, result, remaining)
721711
}
722712

@@ -1054,12 +1044,7 @@ struct PortSet<T: send> : recv<T> {
10541044
}
10551045
none => {
10561046
// Remove this port.
1057-
let mut ports_ = ~[];
1058-
ports <-> ports_;
1059-
vec::consume(ports_,
1060-
|j, x| if i != j {
1061-
vec::push(ports, x)
1062-
});
1047+
let _ = vec::swap_remove(ports, i);
10631048
}
10641049
}
10651050
}

branches/incoming/src/libcore/vec.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ export rsplitn;
3636
export shift;
3737
export unshift;
3838
export pop;
39+
export swap_remove;
3940
export push, push_all, push_all_move;
4041
export grow;
4142
export grow_fn;

0 commit comments

Comments
 (0)