summaryrefslogtreecommitdiff
path: root/src/node_os.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/node_os.cc')
-rw-r--r--src/node_os.cc26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/node_os.cc b/src/node_os.cc
index f09cd6fa5a..c57841ca9e 100644
--- a/src/node_os.cc
+++ b/src/node_os.cc
@@ -72,7 +72,9 @@ static void GetHostname(const FunctionCallbackInfo<Value>& args) {
#else // __MINGW32__
int errorno = WSAGetLastError();
#endif // __POSIX__
- return env->ThrowErrnoException(errorno, "gethostname");
+ CHECK_GE(args.Length(), 1);
+ env->CollectExceptionInfo(args[args.Length() - 1], errorno, "gethostname");
+ return args.GetReturnValue().SetUndefined();
}
buf[sizeof(buf) - 1] = '\0';
@@ -87,7 +89,9 @@ static void GetOSType(const FunctionCallbackInfo<Value>& args) {
#ifdef __POSIX__
struct utsname info;
if (uname(&info) < 0) {
- return env->ThrowErrnoException(errno, "uname");
+ CHECK_GE(args.Length(), 1);
+ env->CollectExceptionInfo(args[args.Length() - 1], errno, "uname");
+ return args.GetReturnValue().SetUndefined();
}
rval = info.sysname;
#else // __MINGW32__
@@ -105,7 +109,9 @@ static void GetOSRelease(const FunctionCallbackInfo<Value>& args) {
#ifdef __POSIX__
struct utsname info;
if (uname(&info) < 0) {
- return env->ThrowErrnoException(errno, "uname");
+ CHECK_GE(args.Length(), 1);
+ env->CollectExceptionInfo(args[args.Length() - 1], errno, "uname");
+ return args.GetReturnValue().SetUndefined();
}
# ifdef _AIX
char release[256];
@@ -242,7 +248,10 @@ static void GetInterfaceAddresses(const FunctionCallbackInfo<Value>& args) {
if (err == UV_ENOSYS) {
return args.GetReturnValue().Set(ret);
} else if (err) {
- return env->ThrowUVException(err, "uv_interface_addresses");
+ CHECK_GE(args.Length(), 1);
+ env->CollectUVExceptionInfo(args[args.Length() - 1], errno,
+ "uv_interface_addresses");
+ return args.GetReturnValue().SetUndefined();
}
for (i = 0; i < count; i++) {
@@ -319,7 +328,9 @@ static void GetHomeDirectory(const FunctionCallbackInfo<Value>& args) {
const int err = uv_os_homedir(buf, &len);
if (err) {
- return env->ThrowUVException(err, "uv_os_homedir");
+ CHECK_GE(args.Length(), 1);
+ env->CollectUVExceptionInfo(args[args.Length() - 1], err, "uv_os_homedir");
+ return args.GetReturnValue().SetUndefined();
}
Local<String> home = String::NewFromUtf8(env->isolate(),
@@ -351,7 +362,10 @@ static void GetUserInfo(const FunctionCallbackInfo<Value>& args) {
const int err = uv_os_get_passwd(&pwd);
if (err) {
- return env->ThrowUVException(err, "uv_os_get_passwd");
+ CHECK_GE(args.Length(), 2);
+ env->CollectUVExceptionInfo(args[args.Length() - 1], err,
+ "uv_os_get_passwd");
+ return args.GetReturnValue().SetUndefined();
}
Local<Value> error;