Skip to content

Commit 1f25e30

Browse files
committed
---
yaml --- r: 4988 b: refs/heads/master c: faef949 h: refs/heads/master v: v3
1 parent 0dd6701 commit 1f25e30

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 15e3ae79360508dc44f428f99bb483038fb2ab1e
2+
refs/heads/master: faef9490ae724bce4802405f826d65988b2b7b05

trunk/src/lib/istr.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,15 @@ fn from_estr(s: &str) -> istr {
1616
}
1717

1818
fn to_estr(s: &istr) -> str {
19-
let s2 = "";
20-
for u in s {
21-
str::push_byte(s2, u);
22-
}
23-
ret s2;
19+
if byte_len(s) == 0u { ret "" };
20+
let v: [u8] = unsafe::reinterpret_cast(s);
21+
let vlen = vec::len(v);
22+
assert vlen > 0u;
23+
vec::unsafe::set_len(v, vlen - 1u);
24+
let res = str::unsafe_from_bytes(v);
25+
vec::unsafe::set_len(v, vlen);
26+
unsafe::leak(v);
27+
ret res;
2428
}
2529

2630
fn from_estrs(ss: &[str]) -> [istr] {

0 commit comments

Comments
 (0)