Fix crash on get index for non-existing string
As _buttons and _axes have both valid string and nullptr. When iterating over them, if given key exists it will work correctly. But if given key does not exist, it will end up with String::operator=(nullptr). As String constructor from nullptr exists, I use it.
This commit is contained in:
parent
72aa848931
commit
c77b710035
|
@ -1338,11 +1338,14 @@ String InputDefault::get_joy_button_string(int p_button) {
|
||||||
|
|
||||||
int InputDefault::get_joy_button_index_from_string(String p_button) {
|
int InputDefault::get_joy_button_index_from_string(String p_button) {
|
||||||
for (int i = 0; i < JOY_BUTTON_MAX; i++) {
|
for (int i = 0; i < JOY_BUTTON_MAX; i++) {
|
||||||
if (p_button == _buttons[i]) {
|
if (_buttons[i] == nullptr) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (p_button == String(_buttons[i])) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ERR_FAIL_V(-1);
|
ERR_FAIL_V_MSG(-1, vformat("Could not find a button index matching the string \"%s\".", p_button));
|
||||||
}
|
}
|
||||||
|
|
||||||
int InputDefault::get_unused_joy_id() {
|
int InputDefault::get_unused_joy_id() {
|
||||||
|
@ -1361,9 +1364,12 @@ String InputDefault::get_joy_axis_string(int p_axis) {
|
||||||
|
|
||||||
int InputDefault::get_joy_axis_index_from_string(String p_axis) {
|
int InputDefault::get_joy_axis_index_from_string(String p_axis) {
|
||||||
for (int i = 0; i < JOY_AXIS_MAX; i++) {
|
for (int i = 0; i < JOY_AXIS_MAX; i++) {
|
||||||
if (p_axis == _axes[i]) {
|
if (_axes[i] == nullptr) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (p_axis == String(_axes[i])) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ERR_FAIL_V(-1);
|
ERR_FAIL_V_MSG(-1, vformat("Could not find an axis index matching the string \"%s\".", p_axis));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue