@@ -151,7 +151,7 @@ static void After(uv_fs_t *req) {
151151 case UV_FS_STAT:
152152 case UV_FS_LSTAT:
153153 case UV_FS_FSTAT:
154- argv[1 ] = BuildStatsObject (static_cast <const uv_statbuf_t *>(req->ptr ));
154+ argv[1 ] = BuildStatsObject (static_cast <const uv_stat_t *>(req->ptr ));
155155 break ;
156156
157157 case UV_FS_READLINK:
@@ -274,7 +274,7 @@ static Persistent<String> atime_symbol;
274274static Persistent<String> mtime_symbol;
275275static Persistent<String> ctime_symbol;
276276
277- Local<Object> BuildStatsObject (const uv_statbuf_t * s) {
277+ Local<Object> BuildStatsObject (const uv_stat_t * s) {
278278 HandleScope scope (node_isolate);
279279
280280 if (dev_symbol.IsEmpty ()) {
@@ -339,15 +339,17 @@ Local<Object> BuildStatsObject(const uv_statbuf_t* s) {
339339# endif
340340#undef X
341341
342- #define X (name ) \
342+ #define X (name, rec ) \
343343 { \
344- Local<Value> val = NODE_UNIXTIME_V8 (s->st_ ##name); \
344+ double msecs = static_cast <double >(s->st_ ##rec.tv_sec ) * 1000 ; \
345+ msecs += static_cast <double >(s->st_ ##rec.tv_nsec / 1000000 ); \
346+ Local<Value> val = v8::Date::New (msecs); \
345347 if (val.IsEmpty ()) return Local<Object>(); \
346348 stats->Set (name##_symbol, val); \
347349 }
348- X (atime)
349- X (mtime)
350- X (ctime)
350+ X (atime, atim )
351+ X (mtime, mtim )
352+ X (ctime, ctim )
351353#undef X
352354
353355 return scope.Close (stats);
@@ -366,7 +368,7 @@ static Handle<Value> Stat(const Arguments& args) {
366368 } else {
367369 SYNC_CALL (stat, *path, *path)
368370 return scope.Close (
369- BuildStatsObject (static_cast <const uv_statbuf_t *>(SYNC_REQ.ptr )));
371+ BuildStatsObject (static_cast <const uv_stat_t *>(SYNC_REQ.ptr )));
370372 }
371373}
372374
@@ -383,7 +385,7 @@ static Handle<Value> LStat(const Arguments& args) {
383385 } else {
384386 SYNC_CALL (lstat, *path, *path)
385387 return scope.Close (
386- BuildStatsObject (static_cast <const uv_statbuf_t *>(SYNC_REQ.ptr )));
388+ BuildStatsObject (static_cast <const uv_stat_t *>(SYNC_REQ.ptr )));
387389 }
388390}
389391
@@ -401,7 +403,7 @@ static Handle<Value> FStat(const Arguments& args) {
401403 } else {
402404 SYNC_CALL (fstat, 0 , fd)
403405 return scope.Close (
404- BuildStatsObject (static_cast <const uv_statbuf_t *>(SYNC_REQ.ptr )));
406+ BuildStatsObject (static_cast <const uv_stat_t *>(SYNC_REQ.ptr )));
405407 }
406408}
407409
0 commit comments