Skip to content

Commit 60ba170

Browse files
committed
std: FsRequest.req_boilerplate() be &mut self
1 parent a87ff60 commit 60ba170

File tree

1 file changed

+58
-17
lines changed

1 file changed

+58
-17
lines changed

src/libstd/rt/uv/file.rs

Lines changed: 58 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ impl FsRequest {
3838

3939
pub fn open<P: PathLike>(self, loop_: &Loop, path: &P, flags: int, mode: int,
4040
cb: FsCallback) {
41-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
41+
let complete_cb_ptr = {
42+
let mut me = self;
43+
me.req_boilerplate(Some(cb))
44+
};
4245
path.path_as_str(|p| {
4346
p.to_c_str().with_ref(|p| unsafe {
4447
uvll::fs_open(loop_.native_handle(),
@@ -49,7 +52,10 @@ impl FsRequest {
4952

5053
pub fn open_sync<P: PathLike>(self, loop_: &Loop, path: &P,
5154
flags: int, mode: int) -> Result<c_int, UvError> {
52-
let complete_cb_ptr = self.req_boilerplate(None);
55+
let complete_cb_ptr = {
56+
let mut me = self;
57+
me.req_boilerplate(None)
58+
};
5359
let result = path.path_as_str(|p| {
5460
p.to_c_str().with_ref(|p| unsafe {
5561
uvll::fs_open(loop_.native_handle(),
@@ -60,7 +66,10 @@ impl FsRequest {
6066
}
6167

6268
pub fn unlink<P: PathLike>(self, loop_: &Loop, path: &P, cb: FsCallback) {
63-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
69+
let complete_cb_ptr = {
70+
let mut me = self;
71+
me.req_boilerplate(Some(cb))
72+
};
6473
path.path_as_str(|p| {
6574
p.to_c_str().with_ref(|p| unsafe {
6675
uvll::fs_unlink(loop_.native_handle(),
@@ -71,7 +80,10 @@ impl FsRequest {
7180

7281
pub fn unlink_sync<P: PathLike>(self, loop_: &Loop, path: &P)
7382
-> Result<c_int, UvError> {
74-
let complete_cb_ptr = self.req_boilerplate(None);
83+
let complete_cb_ptr = {
84+
let mut me = self;
85+
me.req_boilerplate(None)
86+
};
7587
let result = path.path_as_str(|p| {
7688
p.to_c_str().with_ref(|p| unsafe {
7789
uvll::fs_unlink(loop_.native_handle(),
@@ -82,7 +94,10 @@ impl FsRequest {
8294
}
8395

8496
pub fn stat<P: PathLike>(self, loop_: &Loop, path: &P, cb: FsCallback) {
85-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
97+
let complete_cb_ptr = {
98+
let mut me = self;
99+
me.req_boilerplate(Some(cb))
100+
};
86101
path.path_as_str(|p| {
87102
p.to_c_str().with_ref(|p| unsafe {
88103
uvll::fs_stat(loop_.native_handle(),
@@ -92,7 +107,10 @@ impl FsRequest {
92107
}
93108

94109
pub fn write(self, loop_: &Loop, fd: c_int, buf: Buf, offset: i64, cb: FsCallback) {
95-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
110+
let complete_cb_ptr = {
111+
let mut me = self;
112+
me.req_boilerplate(Some(cb))
113+
};
96114
let base_ptr = buf.base as *c_void;
97115
let len = buf.len as uint;
98116
unsafe {
@@ -103,7 +121,10 @@ impl FsRequest {
103121
}
104122
pub fn write_sync(self, loop_: &Loop, fd: c_int, buf: Buf, offset: i64)
105123
-> Result<c_int, UvError> {
106-
let complete_cb_ptr = self.req_boilerplate(None);
124+
let complete_cb_ptr = {
125+
let mut me = self;
126+
me.req_boilerplate(None)
127+
};
107128
let base_ptr = buf.base as *c_void;
108129
let len = buf.len as uint;
109130
let result = unsafe {
@@ -115,7 +136,10 @@ impl FsRequest {
115136
}
116137

117138
pub fn read(self, loop_: &Loop, fd: c_int, buf: Buf, offset: i64, cb: FsCallback) {
118-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
139+
let complete_cb_ptr = {
140+
let mut me = self;
141+
me.req_boilerplate(Some(cb))
142+
};
119143
let buf_ptr = buf.base as *c_void;
120144
let len = buf.len as uint;
121145
unsafe {
@@ -126,7 +150,10 @@ impl FsRequest {
126150
}
127151
pub fn read_sync(self, loop_: &Loop, fd: c_int, buf: Buf, offset: i64)
128152
-> Result<c_int, UvError> {
129-
let complete_cb_ptr = self.req_boilerplate(None);
153+
let complete_cb_ptr = {
154+
let mut me = self;
155+
me.req_boilerplate(None)
156+
};
130157
let buf_ptr = buf.base as *c_void;
131158
let len = buf.len as uint;
132159
let result = unsafe {
@@ -138,14 +165,20 @@ impl FsRequest {
138165
}
139166

140167
pub fn close(self, loop_: &Loop, fd: c_int, cb: FsCallback) {
141-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
168+
let complete_cb_ptr = {
169+
let mut me = self;
170+
me.req_boilerplate(Some(cb))
171+
};
142172
unsafe {
143173
uvll::fs_close(loop_.native_handle(), self.native_handle(),
144174
fd, complete_cb_ptr)
145175
};
146176
}
147177
pub fn close_sync(self, loop_: &Loop, fd: c_int) -> Result<c_int, UvError> {
148-
let complete_cb_ptr = self.req_boilerplate(None);
178+
let complete_cb_ptr = {
179+
let mut me = self;
180+
me.req_boilerplate(None)
181+
};
149182
let result = unsafe {
150183
uvll::fs_close(loop_.native_handle(), self.native_handle(),
151184
fd, complete_cb_ptr)
@@ -154,7 +187,10 @@ impl FsRequest {
154187
}
155188

156189
pub fn mkdir<P: PathLike>(self, loop_: &Loop, path: &P, mode: int, cb: FsCallback) {
157-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
190+
let complete_cb_ptr = {
191+
let mut me = self;
192+
me.req_boilerplate(Some(cb))
193+
};
158194
path.path_as_str(|p| {
159195
p.to_c_str().with_ref(|p| unsafe {
160196
uvll::fs_mkdir(loop_.native_handle(),
@@ -164,7 +200,10 @@ impl FsRequest {
164200
}
165201

166202
pub fn rmdir<P: PathLike>(self, loop_: &Loop, path: &P, cb: FsCallback) {
167-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
203+
let complete_cb_ptr = {
204+
let mut me = self;
205+
me.req_boilerplate(Some(cb))
206+
};
168207
path.path_as_str(|p| {
169208
p.to_c_str().with_ref(|p| unsafe {
170209
uvll::fs_rmdir(loop_.native_handle(),
@@ -175,7 +214,10 @@ impl FsRequest {
175214

176215
pub fn readdir<P: PathLike>(self, loop_: &Loop, path: &P,
177216
flags: c_int, cb: FsCallback) {
178-
let complete_cb_ptr = self.req_boilerplate(Some(cb));
217+
let complete_cb_ptr = {
218+
let mut me = self;
219+
me.req_boilerplate(Some(cb))
220+
};
179221
path.path_as_str(|p| {
180222
p.to_c_str().with_ref(|p| unsafe {
181223
uvll::fs_readdir(loop_.native_handle(),
@@ -193,8 +235,7 @@ impl FsRequest {
193235
None => Ok(result)
194236
}
195237
}
196-
fn req_boilerplate(&self, cb: Option<FsCallback>) -> *u8 {
197-
// XXX: this is unsafe/mutable
238+
fn req_boilerplate(&mut self, cb: Option<FsCallback>) -> *u8 {
198239
let result = match cb {
199240
Some(_) => {
200241
compl_cb as *u8
@@ -204,7 +245,7 @@ impl FsRequest {
204245
self.install_req_data(cb);
205246
result
206247
}
207-
pub fn install_req_data(&self, cb: Option<FsCallback>) {
248+
pub fn install_req_data(&mut self, cb: Option<FsCallback>) {
208249
let fs_req = (self.native_handle()) as *uvll::uv_write_t;
209250
let data = ~RequestData {
210251
complete_cb: cb

0 commit comments

Comments
 (0)