@@ -38,7 +38,10 @@ impl FsRequest {
38
38
39
39
pub fn open < P : PathLike > ( self , loop_ : & Loop , path : & P , flags : int , mode : int ,
40
40
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
+ } ;
42
45
path. path_as_str ( |p| {
43
46
p. to_c_str ( ) . with_ref ( |p| unsafe {
44
47
uvll:: fs_open ( loop_. native_handle ( ) ,
@@ -49,7 +52,10 @@ impl FsRequest {
49
52
50
53
pub fn open_sync < P : PathLike > ( self , loop_ : & Loop , path : & P ,
51
54
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
+ } ;
53
59
let result = path. path_as_str ( |p| {
54
60
p. to_c_str ( ) . with_ref ( |p| unsafe {
55
61
uvll:: fs_open ( loop_. native_handle ( ) ,
@@ -60,7 +66,10 @@ impl FsRequest {
60
66
}
61
67
62
68
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
+ } ;
64
73
path. path_as_str ( |p| {
65
74
p. to_c_str ( ) . with_ref ( |p| unsafe {
66
75
uvll:: fs_unlink ( loop_. native_handle ( ) ,
@@ -71,7 +80,10 @@ impl FsRequest {
71
80
72
81
pub fn unlink_sync < P : PathLike > ( self , loop_ : & Loop , path : & P )
73
82
-> 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
+ } ;
75
87
let result = path. path_as_str ( |p| {
76
88
p. to_c_str ( ) . with_ref ( |p| unsafe {
77
89
uvll:: fs_unlink ( loop_. native_handle ( ) ,
@@ -82,7 +94,10 @@ impl FsRequest {
82
94
}
83
95
84
96
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
+ } ;
86
101
path. path_as_str ( |p| {
87
102
p. to_c_str ( ) . with_ref ( |p| unsafe {
88
103
uvll:: fs_stat ( loop_. native_handle ( ) ,
@@ -92,7 +107,10 @@ impl FsRequest {
92
107
}
93
108
94
109
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
+ } ;
96
114
let base_ptr = buf. base as * c_void ;
97
115
let len = buf. len as uint ;
98
116
unsafe {
@@ -103,7 +121,10 @@ impl FsRequest {
103
121
}
104
122
pub fn write_sync ( self , loop_ : & Loop , fd : c_int , buf : Buf , offset : i64 )
105
123
-> 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
+ } ;
107
128
let base_ptr = buf. base as * c_void ;
108
129
let len = buf. len as uint ;
109
130
let result = unsafe {
@@ -115,7 +136,10 @@ impl FsRequest {
115
136
}
116
137
117
138
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
+ } ;
119
143
let buf_ptr = buf. base as * c_void ;
120
144
let len = buf. len as uint ;
121
145
unsafe {
@@ -126,7 +150,10 @@ impl FsRequest {
126
150
}
127
151
pub fn read_sync ( self , loop_ : & Loop , fd : c_int , buf : Buf , offset : i64 )
128
152
-> 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
+ } ;
130
157
let buf_ptr = buf. base as * c_void ;
131
158
let len = buf. len as uint ;
132
159
let result = unsafe {
@@ -138,14 +165,20 @@ impl FsRequest {
138
165
}
139
166
140
167
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
+ } ;
142
172
unsafe {
143
173
uvll:: fs_close ( loop_. native_handle ( ) , self . native_handle ( ) ,
144
174
fd, complete_cb_ptr)
145
175
} ;
146
176
}
147
177
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
+ } ;
149
182
let result = unsafe {
150
183
uvll:: fs_close ( loop_. native_handle ( ) , self . native_handle ( ) ,
151
184
fd, complete_cb_ptr)
@@ -154,7 +187,10 @@ impl FsRequest {
154
187
}
155
188
156
189
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
+ } ;
158
194
path. path_as_str ( |p| {
159
195
p. to_c_str ( ) . with_ref ( |p| unsafe {
160
196
uvll:: fs_mkdir ( loop_. native_handle ( ) ,
@@ -164,7 +200,10 @@ impl FsRequest {
164
200
}
165
201
166
202
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
+ } ;
168
207
path. path_as_str ( |p| {
169
208
p. to_c_str ( ) . with_ref ( |p| unsafe {
170
209
uvll:: fs_rmdir ( loop_. native_handle ( ) ,
@@ -175,7 +214,10 @@ impl FsRequest {
175
214
176
215
pub fn readdir < P : PathLike > ( self , loop_ : & Loop , path : & P ,
177
216
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
+ } ;
179
221
path. path_as_str ( |p| {
180
222
p. to_c_str ( ) . with_ref ( |p| unsafe {
181
223
uvll:: fs_readdir ( loop_. native_handle ( ) ,
@@ -193,8 +235,7 @@ impl FsRequest {
193
235
None => Ok ( result)
194
236
}
195
237
}
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 {
198
239
let result = match cb {
199
240
Some ( _) => {
200
241
compl_cb as * u8
@@ -204,7 +245,7 @@ impl FsRequest {
204
245
self . install_req_data ( cb) ;
205
246
result
206
247
}
207
- pub fn install_req_data ( & self , cb : Option < FsCallback > ) {
248
+ pub fn install_req_data ( & mut self , cb : Option < FsCallback > ) {
208
249
let fs_req = ( self . native_handle ( ) ) as * uvll:: uv_write_t ;
209
250
let data = ~RequestData {
210
251
complete_cb : cb
0 commit comments