@@ -233,24 +233,26 @@ void install(jsi::Runtime &rt, std::shared_ptr<react::CallInvoker> jsCallInvoker
233233 {
234234 if (sizeof (args) < 3 )
235235 {
236+ jsi::detail::throwJSError (rt, " [react-native-quick-sqlite][asyncExecuteSqlBatch] Incorrect parameter count" );
236237 return {};
237238 }
238239
239240 const jsi::Value ¶ms = args[1 ];
240241 const jsi::Value &callbackHolder = args[2 ];
241242 if (!callbackHolder.isObject () || !callbackHolder.asObject (rt).isFunction (rt)) {
243+ jsi::detail::throwJSError (rt, " [react-native-quick-sqlite][asyncExecuteSqlBatch] The callback argument must be a function" );
242244 return {};
243245 }
244246
245247 if (params.isNull () || params.isUndefined ())
246248 {
247- callbackHolder. asObject (rt). asFunction (rt). call (rt, createError (rt, " [react-native-quick-sqlite][execSQLBatch ] - An array of SQL commands or parameters is needed" ) );
249+ jsi::detail::throwJSError (rt, " [react-native-quick-sqlite][asyncExecuteSqlBatch ] - An array of SQL commands or parameters is needed" );
248250 return {};
249251 }
250252
251253 const string dbName = args[0 ].asString (rt).utf8 (rt);
252254 const jsi::Array &batchParams = params.asObject (rt).asArray (rt);
253- auto callback = make_shared<jsi::Value>(( callbackHolder.asObject (rt) ));
255+ auto callback = make_shared<jsi::Value>(callbackHolder.asObject (rt));
254256
255257 vector<QuickQueryArguments> commands;
256258 jsiBatchParametersToQuickArguments (rt, batchParams, &commands);
@@ -318,9 +320,21 @@ void install(jsi::Runtime &rt, std::shared_ptr<react::CallInvoker> jsCallInvoker
318320 3 ,
319321 [pool](jsi::Runtime &rt, const jsi::Value &thisValue, const jsi::Value *args, size_t count) -> jsi::Value
320322 {
323+ if (sizeof (args) < 3 )
324+ {
325+ jsi::detail::throwJSError (rt, " [react-native-quick-sqlite][asyncLoadSqlFile] Incorrect parameter count" );
326+ return {};
327+ }
328+
329+ const jsi::Value &callbackHolder = args[2 ];
330+ if (!callbackHolder.isObject () || !callbackHolder.asObject (rt).isFunction (rt)) {
331+ jsi::detail::throwJSError (rt, " [react-native-quick-sqlite][asyncLoadSqlFile] The callback argument must be a function" );
332+ return {};
333+ }
334+
321335 const string dbName = args[0 ].asString (rt).utf8 (rt);
322336 const string sqlFileName = args[1 ].asString (rt).utf8 (rt);
323- auto callback = make_shared<jsi::Value>((args[ 2 ] .asObject (rt) ));
337+ auto callback = make_shared<jsi::Value>(callbackHolder .asObject (rt));
324338
325339 auto task =
326340 [&rt, dbName, sqlFileName, callback]()
@@ -364,14 +378,20 @@ void install(jsi::Runtime &rt, std::shared_ptr<react::CallInvoker> jsCallInvoker
364378 {
365379 if (count < 4 )
366380 {
367- jsi::detail::throwJSError (rt, " [react-native-quick-sqlite] Incorrect arguments for asyncExecuteSQL" );
381+ jsi::detail::throwJSError (rt, " [react-native-quick-sqlite][asyncExecuteSql] Incorrect arguments for asyncExecuteSQL" );
382+ return {};
383+ }
384+
385+ const jsi::Value &callbackHolder = args[3 ];
386+ if (!callbackHolder.isObject () || !callbackHolder.asObject (rt).isFunction (rt)) {
387+ jsi::detail::throwJSError (rt, " [react-native-quick-sqlite][asyncExecuteSql] The callback argument must be a function" );
368388 return {};
369389 }
370390
371391 const string dbName = args[0 ].asString (rt).utf8 (rt);
372392 const string query = args[1 ].asString (rt).utf8 (rt);
373393 const jsi::Value &originalParams = args[2 ];
374- auto callback = make_shared<jsi::Value>(args[ 3 ] .asObject (rt));
394+ auto callback = make_shared<jsi::Value>(callbackHolder .asObject (rt));
375395
376396 // Converting query parameters inside the javascript caller thread
377397 vector<QuickValue> params;
0 commit comments