Chromium Code Reviews| Index: runtime/bin/file.cc |
| diff --git a/runtime/bin/file.cc b/runtime/bin/file.cc |
| index f457dd97f44c6f0bc950fdb0f4017294f20177a3..ae417e74891f7fb6a6b94d444cc59a121cebe742 100644 |
| --- a/runtime/bin/file.cc |
| +++ b/runtime/bin/file.cc |
| @@ -439,8 +439,32 @@ void FUNCTION_NAME(File_CreateLink)(Dart_NativeArguments args) { |
| Dart_SetReturnValue(args, err); |
| } |
| } else { |
| - OSError os_error(-1, "Invalid argument", OSError::kUnknown); |
| - Dart_Handle err = DartUtils::NewDartOSError(&os_error); |
| + Dart_Handle err = DartUtils::NewDartArgumentError( |
| + "Non-string argument to Link.create"); |
| + if (Dart_IsError(err)) Dart_PropagateError(err); |
| + Dart_SetReturnValue(args, err); |
| + } |
| + Dart_ExitScope(); |
| +} |
| + |
| + |
| +void FUNCTION_NAME(File_LinkTarget)(Dart_NativeArguments args) { |
| + Dart_EnterScope(); |
| + if (Dart_IsString(Dart_GetNativeArgument(args, 0))) { |
| + const char* name = |
| + DartUtils::GetStringValue(Dart_GetNativeArgument(args, 0)); |
| + char* target = File::LinkTarget(name); |
| + if (target == NULL) { |
| + Dart_Handle err = DartUtils::NewDartOSError(); |
|
Søren Gjesse
2013/03/18 12:28:03
For Windows there are cases where there is no dire
Bill Hesse
2013/03/18 16:13:27
Fixed. All returns of NULL from windows set an OS
|
| + if (Dart_IsError(err)) Dart_PropagateError(err); |
| + Dart_SetReturnValue(args, err); |
| + } else { |
| + Dart_SetReturnValue(args, DartUtils::NewString(target)); |
| + free(target); |
| + } |
| + } else { |
| + Dart_Handle err = DartUtils::NewDartArgumentError( |
| + "Non-string argument to Link.target"); |
| if (Dart_IsError(err)) Dart_PropagateError(err); |
| Dart_SetReturnValue(args, err); |
| } |