@@ -56,40 +56,56 @@ using v8::Value;
5656    }                                                                          \
5757  } while  (0 )
5858
59- inline  Local<Object> CreateSQLiteError (Isolate* isolate, const  char * message) {
60-   Local<String> js_msg = String::NewFromUtf8 (isolate, message).ToLocalChecked ();
61-   Local<Object> e = Exception::Error (js_msg)
62-                         ->ToObject (isolate->GetCurrentContext ())
63-                         .ToLocalChecked ();
64-   e->Set (isolate->GetCurrentContext (),
65-          OneByteString (isolate, " code"  ),
66-          OneByteString (isolate, " ERR_SQLITE_ERROR"  ))
67-       .Check ();
59+ inline  MaybeLocal<Object> CreateSQLiteError (Isolate* isolate,
60+                                             const  char * message) {
61+   Local<String> js_msg;
62+   Local<Object> e;
63+   if  (!String::NewFromUtf8 (isolate, message).ToLocal (&js_msg) ||
64+       !Exception::Error (js_msg)
65+            ->ToObject (isolate->GetCurrentContext ())
66+            .ToLocal (&e) ||
67+       e->Set (isolate->GetCurrentContext (),
68+              OneByteString (isolate, " code"  ),
69+              OneByteString (isolate, " ERR_SQLITE_ERROR"  ))
70+           .IsNothing ()) {
71+     return  MaybeLocal<Object>();
72+   }
6873  return  e;
6974}
7075
71- inline  Local <Object> CreateSQLiteError (Isolate* isolate, sqlite3* db) {
76+ inline  MaybeLocal <Object> CreateSQLiteError (Isolate* isolate, sqlite3* db) {
7277  int  errcode = sqlite3_extended_errcode (db);
7378  const  char * errstr = sqlite3_errstr (errcode);
7479  const  char * errmsg = sqlite3_errmsg (db);
75-   Local<Object> e = CreateSQLiteError (isolate, errmsg);
76-   e->Set (isolate->GetCurrentContext (),
77-          OneByteString (isolate, " errcode"  ),
78-          Integer::New (isolate, errcode))
79-       .Check ();
80-   e->Set (isolate->GetCurrentContext (),
81-          OneByteString (isolate, " errstr"  ),
82-          String::NewFromUtf8 (isolate, errstr).ToLocalChecked ())
83-       .Check ();
80+   Local<String> js_errmsg;
81+   Local<Object> e;
82+   if  (!String::NewFromUtf8 (isolate, errstr).ToLocal (&js_errmsg) ||
83+       !CreateSQLiteError (isolate, errmsg).ToLocal (&e) ||
84+       e->Set (isolate->GetCurrentContext (),
85+              OneByteString (isolate, " errcode"  ),
86+              Integer::New (isolate, errcode))
87+           .IsNothing () ||
88+       e->Set (isolate->GetCurrentContext (),
89+              OneByteString (isolate, " errstr"  ),
90+              js_errmsg)
91+           .IsNothing ()) {
92+     return  MaybeLocal<Object>();
93+   }
8494  return  e;
8595}
8696
8797inline  void  THROW_ERR_SQLITE_ERROR (Isolate* isolate, sqlite3* db) {
88-   isolate->ThrowException (CreateSQLiteError (isolate, db));
98+   Local<Object> e;
99+   if  (CreateSQLiteError (isolate, db).ToLocal (&e)) {
100+     isolate->ThrowException (e);
101+   }
89102}
90103
91104inline  void  THROW_ERR_SQLITE_ERROR (Isolate* isolate, const  char * message) {
92-   isolate->ThrowException (CreateSQLiteError (isolate, message));
105+   Local<Object> e;
106+   if  (CreateSQLiteError (isolate, message).ToLocal (&e)) {
107+     isolate->ThrowException (e);
108+   }
93109}
94110
95111DatabaseSync::DatabaseSync (Environment* env,
0 commit comments