Skip to content

Commit fa51ea6

Browse files
committed
---
yaml --- r: 110863 b: refs/heads/auto c: 9b9ad9b h: refs/heads/master i: 110861: af880b3 110859: 0a9e1cd 110855: 7c21977 110847: abbd2cd v: v3
1 parent 3141009 commit fa51ea6

File tree

2 files changed

+22
-35
lines changed

2 files changed

+22
-35
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0
1313
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
1414
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1515
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
16-
refs/heads/auto: d1e20488a5d1258b1582caa2db77e5210b8bd28f
16+
refs/heads/auto: 9b9ad9b741bcab9669b9a64dd8004382290dfa47
1717
refs/heads/servo: af82457af293e2a842ba6b7759b70288da276167
1818
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1919
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336

branches/auto/src/libstd/path/mod.rs

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -287,42 +287,29 @@ pub trait GenericPath: Clone + GenericPathUnsafe {
287287
/// Fails the task if the extension contains a NUL.
288288
fn set_extension<T: BytesContainer>(&mut self, extension: T) {
289289
assert!(!contains_nul(&extension));
290-
// borrowck causes problems here too
291-
let val = {
292-
match self.filename() {
293-
None => None,
294-
Some(name) => {
295-
let dot = '.' as u8;
296-
match name.rposition_elem(&dot) {
297-
None | Some(0) => {
298-
if extension.container_as_bytes().is_empty() {
299-
None
300-
} else {
301-
let mut v;
302-
let extension = extension.container_as_bytes();
303-
v = slice::with_capacity(name.len() + extension.len() + 1);
304-
v.push_all(name);
305-
v.push(dot);
306-
v.push_all(extension);
307-
Some(v)
308-
}
309-
}
310-
Some(idx) => {
311-
if extension.container_as_bytes().is_empty() {
312-
Some(name.slice_to(idx).to_owned())
313-
} else {
314-
let mut v;
315-
let extension = extension.container_as_bytes();
316-
v = slice::with_capacity(idx + extension.len() + 1);
317-
v.push_all(name.slice_to(idx+1));
318-
v.push_all(extension);
319-
Some(v)
320-
}
321-
}
322-
}
290+
291+
let val = self.filename().and_then(|name| {
292+
let dot = '.' as u8;
293+
let extlen = extension.container_as_bytes().len();
294+
match (name.rposition_elem(&dot), extlen) {
295+
(None, 0) | (Some(0), 0) => None,
296+
(Some(idx), 0) => Some(name.slice_to(idx).to_owned()),
297+
(idx, extlen) => {
298+
let idx = match idx {
299+
None | Some(0) => name.len(),
300+
Some(val) => val
301+
};
302+
303+
let mut v;
304+
v = slice::with_capacity(idx + extlen + 1);
305+
v.push_all(name.slice_to(idx));
306+
v.push(dot);
307+
v.push_all(extension.container_as_bytes());
308+
Some(v)
323309
}
324310
}
325-
};
311+
});
312+
326313
match val {
327314
None => (),
328315
Some(v) => unsafe { self.set_filename_unchecked(v) }

0 commit comments

Comments
 (0)