mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 07:53:26 +00:00
CI: Fix godot regression project test
Fix crash and memory leak in `SpringBoneSimulator3D` Fix crash in `GraphEdit`
This commit is contained in:
parent
6b5b84c0c5
commit
4b9650f54e
4 changed files with 27 additions and 4 deletions
4
.github/workflows/linux_builds.yml
vendored
4
.github/workflows/linux_builds.yml
vendored
|
@ -8,8 +8,8 @@ env:
|
||||||
SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes strict_checks=yes
|
SCONSFLAGS: verbose=yes warnings=extra werror=yes module_text_server_fb_enabled=yes strict_checks=yes
|
||||||
DOTNET_NOLOGO: true
|
DOTNET_NOLOGO: true
|
||||||
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
DOTNET_CLI_TELEMETRY_OPTOUT: true
|
||||||
TSAN_OPTIONS: suppressions=misc/error_suppressions/tsan.txt
|
TSAN_OPTIONS: suppressions=${{ github.workspace }}/misc/error_suppressions/tsan.txt
|
||||||
UBSAN_OPTIONS: suppressions=misc/error_suppressions/ubsan.txt
|
UBSAN_OPTIONS: suppressions=${{ github.workspace }}/misc/error_suppressions/ubsan.txt
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-linux:
|
build-linux:
|
||||||
|
|
|
@ -607,6 +607,7 @@ void SpringBoneSimulator3D::set_radius(int p_index, float p_radius) {
|
||||||
}
|
}
|
||||||
|
|
||||||
float SpringBoneSimulator3D::get_radius(int p_index) const {
|
float SpringBoneSimulator3D::get_radius(int p_index) const {
|
||||||
|
ERR_FAIL_INDEX_V(p_index, settings.size(), 0);
|
||||||
return settings[p_index]->radius;
|
return settings[p_index]->radius;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -640,6 +641,7 @@ void SpringBoneSimulator3D::set_stiffness(int p_index, float p_stiffness) {
|
||||||
}
|
}
|
||||||
|
|
||||||
float SpringBoneSimulator3D::get_stiffness(int p_index) const {
|
float SpringBoneSimulator3D::get_stiffness(int p_index) const {
|
||||||
|
ERR_FAIL_INDEX_V(p_index, settings.size(), 0);
|
||||||
return settings[p_index]->stiffness;
|
return settings[p_index]->stiffness;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -762,8 +764,15 @@ SpringBoneSimulator3D::RotationAxis SpringBoneSimulator3D::get_rotation_axis(int
|
||||||
|
|
||||||
void SpringBoneSimulator3D::set_setting_count(int p_count) {
|
void SpringBoneSimulator3D::set_setting_count(int p_count) {
|
||||||
ERR_FAIL_COND(p_count < 0);
|
ERR_FAIL_COND(p_count < 0);
|
||||||
int delta = p_count - settings.size() + 1;
|
|
||||||
|
int delta = p_count - settings.size();
|
||||||
|
if (delta < 0) {
|
||||||
|
for (int i = delta; i < 0; i++) {
|
||||||
|
memdelete(settings[settings.size() + i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
settings.resize(p_count);
|
settings.resize(p_count);
|
||||||
|
delta++;
|
||||||
if (delta > 1) {
|
if (delta > 1) {
|
||||||
for (int i = 1; i < delta; i++) {
|
for (int i = 1; i < delta; i++) {
|
||||||
settings.write[p_count - i] = memnew(SpringBone3DSetting);
|
settings.write[p_count - i] = memnew(SpringBone3DSetting);
|
||||||
|
@ -949,8 +958,14 @@ void SpringBoneSimulator3D::set_joint_count(int p_index, int p_count) {
|
||||||
ERR_FAIL_INDEX(p_index, settings.size());
|
ERR_FAIL_INDEX(p_index, settings.size());
|
||||||
ERR_FAIL_COND(p_count < 0);
|
ERR_FAIL_COND(p_count < 0);
|
||||||
Vector<SpringBone3DJointSetting *> &joints = settings[p_index]->joints;
|
Vector<SpringBone3DJointSetting *> &joints = settings[p_index]->joints;
|
||||||
int delta = p_count - joints.size() + 1;
|
int delta = p_count - joints.size();
|
||||||
|
if (delta < 0) {
|
||||||
|
for (int i = delta; i < 0; i++) {
|
||||||
|
memdelete(joints[joints.size() + i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
joints.resize(p_count);
|
joints.resize(p_count);
|
||||||
|
delta++;
|
||||||
if (delta > 1) {
|
if (delta > 1) {
|
||||||
for (int i = 1; i < delta; i++) {
|
for (int i = 1; i < delta; i++) {
|
||||||
joints.write[p_count - i] = memnew(SpringBone3DJointSetting);
|
joints.write[p_count - i] = memnew(SpringBone3DJointSetting);
|
||||||
|
@ -1659,3 +1674,7 @@ Quaternion SpringBoneSimulator3D::get_from_to_rotation(const Vector3 &p_from, co
|
||||||
}
|
}
|
||||||
return Quaternion(axis.normalized(), angle);
|
return Quaternion(axis.normalized(), angle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SpringBoneSimulator3D::~SpringBoneSimulator3D() {
|
||||||
|
clear_settings();
|
||||||
|
}
|
||||||
|
|
|
@ -284,6 +284,8 @@ public:
|
||||||
#ifdef TOOLS_ENABLED
|
#ifdef TOOLS_ENABLED
|
||||||
virtual bool is_processed_on_saving() const override { return true; }
|
virtual bool is_processed_on_saving() const override { return true; }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
~SpringBoneSimulator3D();
|
||||||
};
|
};
|
||||||
|
|
||||||
VARIANT_ENUM_CAST(SpringBoneSimulator3D::BoneDirection);
|
VARIANT_ENUM_CAST(SpringBoneSimulator3D::BoneDirection);
|
||||||
|
|
|
@ -2330,6 +2330,8 @@ TypedArray<Dictionary> GraphEdit::_get_connections_intersecting_with_rect(const
|
||||||
}
|
}
|
||||||
|
|
||||||
TypedArray<Dictionary> GraphEdit::_get_connection_list_from_node(const StringName &p_node) const {
|
TypedArray<Dictionary> GraphEdit::_get_connection_list_from_node(const StringName &p_node) const {
|
||||||
|
ERR_FAIL_COND_V(!connection_map.has(p_node), TypedArray<Dictionary>());
|
||||||
|
|
||||||
List<Ref<GraphEdit::Connection>> connections_from_node = connection_map.get(p_node);
|
List<Ref<GraphEdit::Connection>> connections_from_node = connection_map.get(p_node);
|
||||||
TypedArray<Dictionary> connections_from_node_dict;
|
TypedArray<Dictionary> connections_from_node_dict;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue