@@ -37,12 +37,16 @@ static int After(eio_req *req) {
37
37
ev_unref (EV_DEFAULT_UC);
38
38
39
39
int argc = 0 ;
40
- Local<Value> argv[5 ]; // 5 is the maximum number of args
40
+ Local<Value> argv[6 ]; // 6 is the maximum number of args
41
41
42
42
if (req->errorno != 0 ) {
43
43
argc = 1 ;
44
44
argv[0 ] = errno_exception (req->errorno );
45
45
} else {
46
+ // Note: the error is always given the first argument of the callback.
47
+ // If there is no error then then the first argument is null.
48
+ argv[0 ] = Local<Value>::New (Null ());
49
+
46
50
switch (req->type ) {
47
51
case EIO_CLOSE:
48
52
case EIO_RENAME:
@@ -54,30 +58,30 @@ static int After(eio_req *req) {
54
58
55
59
case EIO_OPEN:
56
60
case EIO_SENDFILE:
57
- argc = 1 ;
58
- argv[0 ] = Integer::New (req->result );
61
+ argc = 2 ;
62
+ argv[1 ] = Integer::New (req->result );
59
63
break ;
60
64
61
65
case EIO_WRITE:
62
- argc = 1 ;
63
- argv[0 ] = Integer::New (req->result );
66
+ argc = 2 ;
67
+ argv[1 ] = Integer::New (req->result );
64
68
break ;
65
69
66
70
case EIO_STAT:
67
71
{
68
72
struct stat *s = reinterpret_cast <struct stat *>(req->ptr2 );
69
- argc = 1 ;
70
- argv[0 ] = BuildStatsObject (s);
73
+ argc = 2 ;
74
+ argv[1 ] = BuildStatsObject (s);
71
75
break ;
72
76
}
73
77
74
78
case EIO_READ:
75
79
{
76
- argc = 2 ;
80
+ argc = 3 ;
77
81
Local<Object> obj = Local<Object>::New (*callback);
78
82
Local<Value> enc_val = obj->GetHiddenValue (encoding_symbol);
79
- argv[0 ] = Encode (req->ptr2 , req->result , ParseEncoding (enc_val));
80
- argv[1 ] = Integer::New (req->result );
83
+ argv[1 ] = Encode (req->ptr2 , req->result , ParseEncoding (enc_val));
84
+ argv[2 ] = Integer::New (req->result );
81
85
break ;
82
86
}
83
87
@@ -100,8 +104,8 @@ static int After(eio_req *req) {
100
104
#endif
101
105
}
102
106
103
- argc = 1 ;
104
- argv[0 ] = names;
107
+ argc = 2 ;
108
+ argv[1 ] = names;
105
109
break ;
106
110
}
107
111
0 commit comments