diff options
Diffstat (limited to 'deps/v8/src/runtime/runtime-uri.cc')
-rw-r--r-- | deps/v8/src/runtime/runtime-uri.cc | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/deps/v8/src/runtime/runtime-uri.cc b/deps/v8/src/runtime/runtime-uri.cc index 4f77af81cb..e64e9dcea7 100644 --- a/deps/v8/src/runtime/runtime-uri.cc +++ b/deps/v8/src/runtime/runtime-uri.cc @@ -6,6 +6,7 @@ #include "src/arguments.h" #include "src/conversions.h" +#include "src/isolate-inl.h" #include "src/objects-inl.h" #include "src/string-search.h" #include "src/utils.h" @@ -257,13 +258,15 @@ MaybeHandle<String> URIEscape::Escape(Isolate* isolate, Handle<String> string) { RUNTIME_FUNCTION(Runtime_URIEscape) { HandleScope scope(isolate); - DCHECK(args.length() == 1); - CONVERT_ARG_HANDLE_CHECKED(String, source, 0); - Handle<String> string = String::Flatten(source); - DCHECK(string->IsFlat()); + DCHECK_EQ(1, args.length()); + CONVERT_ARG_HANDLE_CHECKED(Object, input, 0); + Handle<String> source; + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, source, + Object::ToString(isolate, input)); + source = String::Flatten(source); Handle<String> result; ASSIGN_RETURN_FAILURE_ON_EXCEPTION( - isolate, result, string->IsOneByteRepresentationUnderneath() + isolate, result, source->IsOneByteRepresentationUnderneath() ? URIEscape::Escape<uint8_t>(isolate, source) : URIEscape::Escape<uc16>(isolate, source)); return *result; @@ -273,15 +276,18 @@ RUNTIME_FUNCTION(Runtime_URIEscape) { RUNTIME_FUNCTION(Runtime_URIUnescape) { HandleScope scope(isolate); DCHECK(args.length() == 1); - CONVERT_ARG_HANDLE_CHECKED(String, source, 0); - Handle<String> string = String::Flatten(source); - DCHECK(string->IsFlat()); + CONVERT_ARG_HANDLE_CHECKED(Object, input, 0); + Handle<String> source; + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, source, + Object::ToString(isolate, input)); + source = String::Flatten(source); Handle<String> result; ASSIGN_RETURN_FAILURE_ON_EXCEPTION( - isolate, result, string->IsOneByteRepresentationUnderneath() + isolate, result, source->IsOneByteRepresentationUnderneath() ? URIUnescape::Unescape<uint8_t>(isolate, source) : URIUnescape::Unescape<uc16>(isolate, source)); return *result; } + } // namespace internal } // namespace v8 |