 Issue 29812649:
  Issue 6526 - *ToV8String() return MaybeLocal<> and check Call() return value  (Closed) 
  Base URL: https://hg.adblockplus.org/libadblockplus/
    
  
    Issue 29812649:
  Issue 6526 - *ToV8String() return MaybeLocal<> and check Call() return value  (Closed) 
  Base URL: https://hg.adblockplus.org/libadblockplus/| Index: src/Utils.h | 
| =================================================================== | 
| --- a/src/Utils.h | 
| +++ b/src/Utils.h | 
| @@ -37,32 +37,36 @@ | 
| /* | 
| * Check for exception and then that a MaybeLocal<> isn't empty, | 
| * and throw a JsError if it is, otherwise return the Local<> | 
| * Call using the macro %CHECKED_MAYBE to get the location. | 
| */ | 
| template<class T> | 
| v8::Local<T> CheckedToLocal(v8::Isolate* isolate, | 
| - v8::MaybeLocal<T>&& value, const v8::TryCatch& tryCatch, | 
| + v8::MaybeLocal<T>&& value, const v8::TryCatch* tryCatch, | 
| const char* filename, int line) | 
| { | 
| - CheckTryCatch(isolate, tryCatch); | 
| + if (tryCatch) | 
| + CheckTryCatch(isolate, *tryCatch); | 
| if (value.IsEmpty()) | 
| throw AdblockPlus::JsError("Empty value at ", filename, line); | 
| return value.ToLocalChecked(); | 
| } | 
| -#define CHECKED_TO_LOCAL(isolate, value, tryCatch) \ | 
| - AdblockPlus::Utils::CheckedToLocal(isolate, value, tryCatch, __FILE__, __LINE__) | 
| +#define CHECKED_TO_LOCAL_WITH_TRY_CATCH(isolate, value, tryCatch) \ | 
| + AdblockPlus::Utils::CheckedToLocal(isolate, value, &tryCatch, __FILE__, __LINE__) | 
| 
sergei
2018/08/06 12:18:30
I wonder whether we should use all macro arguments
 
hub
2018/08/06 13:25:48
I'll do that. It is safer.
 | 
| + | 
| +#define CHECKED_TO_LOCAL(isolate, value) \ | 
| + AdblockPlus::Utils::CheckedToLocal(isolate, value, nullptr, __FILE__, __LINE__) | 
| std::string FromV8String(v8::Isolate* isolate, const v8::Local<v8::Value>& value); | 
| StringBuffer StringBufferFromV8String(v8::Isolate* isolate, const v8::Local<v8::Value>& value); | 
| - v8::Local<v8::String> ToV8String(v8::Isolate* isolate, const std::string& str); | 
| - v8::Local<v8::String> StringBufferToV8String(v8::Isolate* isolate, const StringBuffer& bytes); | 
| + v8::MaybeLocal<v8::String> ToV8String(v8::Isolate* isolate, const std::string& str); | 
| + v8::MaybeLocal<v8::String> StringBufferToV8String(v8::Isolate* isolate, const StringBuffer& bytes); | 
| void ThrowExceptionInJS(v8::Isolate* isolate, const std::string& str); | 
| // Code for templated function has to be in a header file, can't be in .cpp | 
| template<class T> | 
| T TrimString(const T& text) | 
| { | 
| // Via http://stackoverflow.com/questions/216823/whats-the-best-way-to-trim-stdstring | 
| T trimmed(text); |