@@ -1181,7 +1181,7 @@ void DatabaseSync::Location(const FunctionCallbackInfo<Value>& args) {
11811181 Environment* env = Environment::GetCurrent (args);
11821182 THROW_AND_RETURN_ON_BAD_STATE (env, !db->IsOpen (), " database is not open" );
11831183
1184- std::string db_name = " main" ;
1184+ std::string_view db_name = " main" ;
11851185 if (!args[0 ]->IsUndefined ()) {
11861186 if (!args[0 ]->IsString ()) {
11871187 THROW_ERR_INVALID_ARG_TYPE (env->isolate (),
@@ -1193,11 +1193,17 @@ void DatabaseSync::Location(const FunctionCallbackInfo<Value>& args) {
11931193 }
11941194
11951195 const char * db_filename =
1196- sqlite3_db_filename (db->connection_ , db_name.c_str ());
1196+ sqlite3_db_filename (db->connection_ , std::string (db_name).c_str ());
1197+ if (!db_filename || db_filename[0 ] == ' \0 ' ) {
1198+ args.GetReturnValue ().Set (Null (env->isolate ()));
1199+ return ;
1200+ }
11971201
1198- args.GetReturnValue ().Set (
1199- String::NewFromUtf8 (env->isolate (), db_filename, NewStringType::kNormal )
1200- .ToLocalChecked ());
1202+ Local<String> ret;
1203+ if (String::NewFromUtf8 (env->isolate (), db_filename).ToLocal (&ret)) {
1204+ args.GetReturnValue ().Set (ret);
1205+ return ;
1206+ }
12011207}
12021208
12031209void DatabaseSync::AggregateFunction (const FunctionCallbackInfo<Value>& args) {
@@ -1320,7 +1326,7 @@ void DatabaseSync::AggregateFunction(const FunctionCallbackInfo<Value>& args) {
13201326 return ;
13211327 }
13221328
1323- // Subract 1 because the first argument is the aggregate value.
1329+ // Subtract 1 because the first argument is the aggregate value.
13241330 argc = js_len.As <Int32>()->Value () - 1 ;
13251331 if (!inverseFunc.IsEmpty () &&
13261332 !inverseFunc->Get (env->context (), env->length_string ())
@@ -2632,7 +2638,8 @@ static void Initialize(Local<Object> target,
26322638 SetProtoMethod (isolate, db_tmpl, " prepare" , DatabaseSync::Prepare);
26332639 SetProtoMethod (isolate, db_tmpl, " exec" , DatabaseSync::Exec);
26342640 SetProtoMethod (isolate, db_tmpl, " function" , DatabaseSync::CustomFunction);
2635- SetProtoMethod (isolate, db_tmpl, " location" , DatabaseSync::Location);
2641+ SetProtoMethodNoSideEffect (
2642+ isolate, db_tmpl, " location" , DatabaseSync::Location);
26362643 SetProtoMethod (
26372644 isolate, db_tmpl, " aggregate" , DatabaseSync::AggregateFunction);
26382645 SetProtoMethod (
0 commit comments