1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-24 15:26:15 +00:00

[Core] Disconnect one-shot signals before calling callbacks

This prevents infinite recursion with one-shot connections emitting
themselves
This commit is contained in:
A Thousand Ships
2024-03-13 17:57:22 +01:00
parent fe01776f05
commit db455e5bee
5 changed files with 76 additions and 41 deletions

View File

@@ -0,0 +1,12 @@
# https://github.com/godotengine/godot/issues/89439
extends Node
signal my_signal
func async_func():
await my_signal
my_signal.emit()
func test():
async_func()
my_signal.emit()

View File

@@ -0,0 +1 @@
GDTEST_OK

View File

@@ -0,0 +1,22 @@
# https://github.com/godotengine/godot/issues/89439
signal my_signal
func foo():
print("Foo")
my_signal.emit()
func bar():
print("Bar")
func baz():
print("Baz")
func test():
@warning_ignore("return_value_discarded")
my_signal.connect(foo, CONNECT_ONE_SHOT)
@warning_ignore("return_value_discarded")
my_signal.connect(bar, CONNECT_ONE_SHOT)
@warning_ignore("return_value_discarded")
my_signal.connect(baz)
my_signal.emit()

View File

@@ -0,0 +1,5 @@
GDTEST_OK
Foo
Baz
Bar
Baz