Open OffsetMOSFET opened 3 weeks ago
What would the expected behaviour here be? It seems like the signal is copied with an empty path which is invalid. The signal is then not persisted to the .tscn
file when the scene is saved. Since the signal is not persisted, closing and re-opening the scene clears the invalid signal from the Editor UI, so the issue disappears. Based on the fact the signal is not persisted, it seems like the correct behaviour would potentially be to not copy this signal over at all, since it isn't going to be persisted anyway.
However, an alternative expected behaviour I could envision is that the signal is copied preserving the relative path (i.e. to its immediate parent), but it is unclear how this would work in more complex cases. Given that it seems harder to reason about, going with the more obvious fix of just not copying this signal seems like it may be the better option.
The actual segfault however seems to be caused by the logic displaying the warning labels in the connect dialog (ConnectDialog::_update_warning_label
) which does not account for the fact that the destination path could be invalid (attempts to fetch the script for the target node without checking if the node is a nullptr). Since this method already has checks to continue gracefully if the script is not present, it may be beneficial to also check if the destination path is invalid and allow the dialog to continue gracefully in case it doesn't exist for some other reason.
Tested versions
4.3.1.rc
System information
Ubuntu 22.04.4 LTS 64-bit
Issue description
Copying a node with signal into another scene will cause common_parent is null errors and similar errors.
Trying to edit the signal in the new scene via the context menu causes a segfault.
Steps to reproduce
Create a node. Connect one of its signals to the scene.
Create a second scene.
Copy the node to the second scene. Error should start appearing.
Try to edit the signal connection on the copied node. This should segfault.
Minimal reproduction project (MRP)
N/A