Skip to content

Commit 9c41b1c

Browse files
committed
---
yaml --- r: 41679 b: refs/heads/master c: 8367589 h: refs/heads/master i: 41677: c0e6d37 41675: a73f14a 41671: 7d8f53f 41663: bc69e11 v: v3
1 parent 6664911 commit 9c41b1c

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: b71381dcc9c7393dec2f45267c538ff126893120
2+
refs/heads/master: 83675895af7c6af80cc8a4f5cec4e565dc829fca
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 2f46b763da2c098913884f101b6d71d69af41b49
55
refs/heads/try: 3d5418789064fdb463e872a4e651af1c628a3650

trunk/src/libcore/os.rs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -106,27 +106,29 @@ pub mod win32 {
106106

107107
pub fn fill_utf16_buf_and_decode(f: fn(*mut u16, DWORD) -> DWORD)
108108
-> Option<~str> {
109-
let mut n = tmpbuf_sz as DWORD;
110-
let mut res = None;
111-
let mut done = false;
112-
while !done {
113-
let buf = vec::to_mut(vec::from_elem(n as uint, 0u16));
114-
do vec::as_mut_buf(buf) |b, _sz| {
115-
let k : DWORD = f(b, tmpbuf_sz as DWORD);
116-
if k == (0 as DWORD) {
117-
done = true;
118-
} else if (k == n &&
119-
libc::GetLastError() ==
120-
libc::ERROR_INSUFFICIENT_BUFFER as DWORD) {
121-
n *= (2 as DWORD);
122-
} else {
123-
let sub = vec::slice(buf, 0u, k as uint);
124-
res = option::Some(str::from_utf16(sub));
125-
done = true;
109+
unsafe {
110+
let mut n = tmpbuf_sz as DWORD;
111+
let mut res = None;
112+
let mut done = false;
113+
while !done {
114+
let buf = vec::to_mut(vec::from_elem(n as uint, 0u16));
115+
do vec::as_mut_buf(buf) |b, _sz| {
116+
let k : DWORD = f(b, tmpbuf_sz as DWORD);
117+
if k == (0 as DWORD) {
118+
done = true;
119+
} else if (k == n &&
120+
libc::GetLastError() ==
121+
libc::ERROR_INSUFFICIENT_BUFFER as DWORD) {
122+
n *= (2 as DWORD);
123+
} else {
124+
let sub = vec::slice(buf, 0u, k as uint);
125+
res = option::Some(str::from_utf16(sub));
126+
done = true;
127+
}
126128
}
127129
}
130+
return res;
128131
}
129-
return res;
130132
}
131133

132134
pub fn as_utf16_p<T>(s: &str, f: fn(*u16) -> T) -> T {

0 commit comments

Comments
 (0)