Skip to content

Commit 947f5a8

Browse files
committed
Merge pull request #91247 from AThousandShips/callable_fix
Fix unsafe uses of `Callable.is_null()`
2 parents 164f28e + 31e7ee6 commit 947f5a8

File tree

19 files changed

+40
-40
lines changed

19 files changed

+40
-40
lines changed

core/core_bind.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1921,7 +1921,7 @@ void EngineDebugger::send_message(const String &p_msg, const Array &p_data) {
19211921

19221922
Error EngineDebugger::call_capture(void *p_user, const String &p_cmd, const Array &p_data, bool &r_captured) {
19231923
Callable &capture = *(Callable *)p_user;
1924-
if (capture.is_null()) {
1924+
if (!capture.is_valid()) {
19251925
return FAILED;
19261926
}
19271927
Variant cmd = p_cmd, data = p_data;

core/object/object.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1460,7 +1460,7 @@ Error Object::connect(const StringName &p_signal, const Callable &p_callable, ui
14601460
}
14611461

14621462
bool Object::is_connected(const StringName &p_signal, const Callable &p_callable) const {
1463-
ERR_FAIL_COND_V_MSG(p_callable.is_null(), false, "Cannot determine if connected to '" + p_signal + "': the provided callable is null.");
1463+
ERR_FAIL_COND_V_MSG(p_callable.is_null(), false, "Cannot determine if connected to '" + p_signal + "': the provided callable is null."); // Should use `is_null`, see note in `connect` about the use of `is_valid`.
14641464
const SignalData *s = signal_map.getptr(p_signal);
14651465
if (!s) {
14661466
bool signal_is_valid = ClassDB::has_signal(get_class_name(), p_signal);
@@ -1483,7 +1483,7 @@ void Object::disconnect(const StringName &p_signal, const Callable &p_callable)
14831483
}
14841484

14851485
bool Object::_disconnect(const StringName &p_signal, const Callable &p_callable, bool p_force) {
1486-
ERR_FAIL_COND_V_MSG(p_callable.is_null(), false, "Cannot disconnect from '" + p_signal + "': the provided callable is null.");
1486+
ERR_FAIL_COND_V_MSG(p_callable.is_null(), false, "Cannot disconnect from '" + p_signal + "': the provided callable is null."); // Should use `is_null`, see note in `connect` about the use of `is_valid`.
14871487

14881488
SignalData *s = signal_map.getptr(p_signal);
14891489
if (!s) {

core/object/undo_redo.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ void UndoRedo::create_action(const String &p_name, MergeMode p_mode, bool p_back
144144
}
145145

146146
void UndoRedo::add_do_method(const Callable &p_callable) {
147-
ERR_FAIL_COND(p_callable.is_null());
147+
ERR_FAIL_COND(!p_callable.is_valid());
148148
ERR_FAIL_COND(action_level <= 0);
149149
ERR_FAIL_COND((current_action + 1) >= actions.size());
150150

@@ -169,7 +169,7 @@ void UndoRedo::add_do_method(const Callable &p_callable) {
169169
}
170170

171171
void UndoRedo::add_undo_method(const Callable &p_callable) {
172-
ERR_FAIL_COND(p_callable.is_null());
172+
ERR_FAIL_COND(!p_callable.is_valid());
173173
ERR_FAIL_COND(action_level <= 0);
174174
ERR_FAIL_COND((current_action + 1) >= actions.size());
175175

drivers/gles3/storage/utilities.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,15 +299,15 @@ void Utilities::visibility_notifier_call(RID p_notifier, bool p_enter, bool p_de
299299
ERR_FAIL_NULL(vn);
300300

301301
if (p_enter) {
302-
if (!vn->enter_callback.is_null()) {
302+
if (vn->enter_callback.is_valid()) {
303303
if (p_deferred) {
304304
vn->enter_callback.call_deferred();
305305
} else {
306306
vn->enter_callback.call();
307307
}
308308
}
309309
} else {
310-
if (!vn->exit_callback.is_null()) {
310+
if (vn->exit_callback.is_valid()) {
311311
if (p_deferred) {
312312
vn->exit_callback.call_deferred();
313313
} else {

editor/gui/editor_validation_panel.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ void EditorValidationPanel::set_update_callback(const Callable &p_callback) {
8181
}
8282

8383
void EditorValidationPanel::update() {
84-
ERR_FAIL_COND(update_callback.is_null());
84+
ERR_FAIL_COND(!update_callback.is_valid());
8585

8686
if (pending_update) {
8787
return;

platform/android/display_server_android.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ void DisplayServerAndroid::window_set_drop_files_callback(const Callable &p_call
326326
}
327327

328328
void DisplayServerAndroid::_window_callback(const Callable &p_callable, const Variant &p_arg, bool p_deferred) const {
329-
if (!p_callable.is_null()) {
329+
if (p_callable.is_valid()) {
330330
if (p_deferred) {
331331
p_callable.call_deferred(p_arg);
332332
} else {

platform/ios/display_server_ios.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@
218218
}
219219

220220
void DisplayServerIOS::_window_callback(const Callable &p_callable, const Variant &p_arg) const {
221-
if (!p_callable.is_null()) {
221+
if (p_callable.is_valid()) {
222222
p_callable.call(p_arg);
223223
}
224224
}

platform/linuxbsd/x11/display_server_x11.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4992,7 +4992,7 @@ void DisplayServerX11::process_events() {
49924992
files.write[i] = files[i].replace("file://", "").uri_decode();
49934993
}
49944994

4995-
if (!windows[window_id].drop_files_callback.is_null()) {
4995+
if (windows[window_id].drop_files_callback.is_valid()) {
49964996
windows[window_id].drop_files_callback.call(files);
49974997
}
49984998

platform/macos/display_server_macos.mm

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -938,7 +938,7 @@
938938
button_pressed = int64_t(2 + (ret - NSAlertThirdButtonReturn));
939939
}
940940

941-
if (!p_callback.is_null()) {
941+
if (p_callback.is_valid()) {
942942
Variant ret;
943943
Callable::CallError ce;
944944
const Variant *args[1] = { &button_pressed };
@@ -1018,7 +1018,7 @@
10181018
String url;
10191019
url.parse_utf8([[[panel URL] path] UTF8String]);
10201020
files.push_back(url);
1021-
if (!callback.is_null()) {
1021+
if (callback.is_valid()) {
10221022
if (p_options_in_cb) {
10231023
Variant v_result = true;
10241024
Variant v_files = files;
@@ -1047,7 +1047,7 @@
10471047
}
10481048
}
10491049
} else {
1050-
if (!callback.is_null()) {
1050+
if (callback.is_valid()) {
10511051
if (p_options_in_cb) {
10521052
Variant v_result = false;
10531053
Variant v_files = Vector<String>();
@@ -1134,7 +1134,7 @@
11341134
url.parse_utf8([[[urls objectAtIndex:i] path] UTF8String]);
11351135
files.push_back(url);
11361136
}
1137-
if (!callback.is_null()) {
1137+
if (callback.is_valid()) {
11381138
if (p_options_in_cb) {
11391139
Variant v_result = true;
11401140
Variant v_files = files;
@@ -1163,7 +1163,7 @@
11631163
}
11641164
}
11651165
} else {
1166-
if (!callback.is_null()) {
1166+
if (callback.is_valid()) {
11671167
if (p_options_in_cb) {
11681168
Variant v_result = false;
11691169
Variant v_files = Vector<String>();
@@ -1222,7 +1222,7 @@
12221222
String ret;
12231223
ret.parse_utf8([[input stringValue] UTF8String]);
12241224

1225-
if (!p_callback.is_null()) {
1225+
if (p_callback.is_valid()) {
12261226
Variant v_result = ret;
12271227
Variant ret;
12281228
Callable::CallError ce;

platform/macos/godot_content_view.mm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ - (BOOL)performDragOperation:(id<NSDraggingInfo>)sender {
313313
}
314314

315315
DisplayServerMacOS::WindowData &wd = ds->get_window(window_id);
316-
if (!wd.drop_files_callback.is_null()) {
316+
if (wd.drop_files_callback.is_valid()) {
317317
Vector<String> files;
318318
NSPasteboard *pboard = [sender draggingPasteboard];
319319

0 commit comments

Comments
 (0)