Skip to content

Commit f5aeea8

Browse files
committed
---
yaml --- r: 39789 b: refs/heads/incoming c: 8367589 h: refs/heads/master i: 39787: be3733d v: v3
1 parent 5247425 commit f5aeea8

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
@@ -6,7 +6,7 @@ refs/heads/try: 3d5418789064fdb463e872a4e651af1c628a3650
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: a810c03263670238bccd64cabb12a23a46e3a278
9-
refs/heads/incoming: b71381dcc9c7393dec2f45267c538ff126893120
9+
refs/heads/incoming: 83675895af7c6af80cc8a4f5cec4e565dc829fca
1010
refs/heads/dist-snap: 22efa39382d41b084fde1719df7ae8ce5697d8c9
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/incoming/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)