@@ -12,14 +12,15 @@ use std::c_str::CString;
12
12
use std:: c_str;
13
13
use std:: cast:: transmute;
14
14
use std:: cast;
15
- use std:: libc:: { c_int, c_char, c_void, c_uint } ;
15
+ use std:: libc:: { c_int, c_char, c_void, size_t } ;
16
16
use std:: libc;
17
17
use std:: rt:: BlockedTask ;
18
18
use std:: rt:: io:: { FileStat , IoError } ;
19
19
use std:: rt:: io;
20
20
use std:: rt:: local:: Local ;
21
21
use std:: rt:: rtio;
22
22
use std:: rt:: sched:: { Scheduler , SchedHandle } ;
23
+ use std:: task;
23
24
use std:: vec;
24
25
25
26
use super :: { Loop , UvError , uv_error_to_io_error, wait_until_woken_after} ;
@@ -79,7 +80,7 @@ impl FsRequest {
79
80
execute_nop ( |req, cb| unsafe {
80
81
uvll:: uv_fs_write ( loop_. handle , req,
81
82
fd, vec:: raw:: to_ptr ( buf) as * c_void ,
82
- buf. len ( ) as c_uint , offset, cb)
83
+ buf. len ( ) as size_t , offset, cb)
83
84
} )
84
85
}
85
86
@@ -89,7 +90,7 @@ impl FsRequest {
89
90
do execute ( |req, cb| unsafe {
90
91
uvll:: uv_fs_read ( loop_. handle , req,
91
92
fd, vec:: raw:: to_ptr ( buf) as * c_void ,
92
- buf. len ( ) as c_uint , offset, cb)
93
+ buf. len ( ) as size_t , offset, cb)
93
94
} ) . map |req| {
94
95
req. get_result ( ) as int
95
96
}
@@ -297,24 +298,26 @@ impl Drop for FsRequest {
297
298
fn execute ( f : & fn ( * uvll:: uv_fs_t , uvll:: uv_fs_cb ) -> c_int )
298
299
-> Result < FsRequest , UvError >
299
300
{
300
- let mut req = FsRequest {
301
- fired : false ,
302
- req : unsafe { uvll:: malloc_req ( uvll:: UV_FS ) }
303
- } ;
304
- return match f ( req. req , fs_cb) {
305
- 0 => {
306
- req. fired = true ;
307
- let mut slot = None ;
308
- do wait_until_woken_after ( & mut slot) {
309
- unsafe { uvll:: set_data_for_req ( req. req , & slot) }
310
- }
311
- match req. get_result ( ) {
312
- n if n < 0 => Err ( UvError ( n) ) ,
313
- _ => Ok ( req) ,
301
+ return do task:: unkillable {
302
+ let mut req = FsRequest {
303
+ fired : false ,
304
+ req : unsafe { uvll:: malloc_req ( uvll:: UV_FS ) }
305
+ } ;
306
+ match f ( req. req , fs_cb) {
307
+ 0 => {
308
+ req. fired = true ;
309
+ let mut slot = None ;
310
+ do wait_until_woken_after ( & mut slot) {
311
+ unsafe { uvll:: set_data_for_req ( req. req , & slot) }
312
+ }
313
+ match req. get_result ( ) {
314
+ n if n < 0 => Err ( UvError ( n) ) ,
315
+ _ => Ok ( req) ,
316
+ }
314
317
}
315
- }
316
- n => Err ( UvError ( n) )
318
+ n => Err ( UvError ( n) )
317
319
320
+ }
318
321
} ;
319
322
320
323
extern fn fs_cb ( req : * uvll:: uv_fs_t ) {
0 commit comments