Fix a crash when built-in script is not saved and have syntax error
When built-in script is not saved, it has empty path, and origin code assumes error with empty path is a depended_error but that's not always the case. Also add protection before access list index 0.
This commit is contained in:
parent
f7c48cf803
commit
cfd7dfd985
@ -480,16 +480,18 @@ void ScriptTextEditor::_validate_script() {
|
||||
|
||||
if (!script->get_language()->validate(text, script->get_path(), &fnc, &errors, &warnings, &safe_lines)) {
|
||||
for (List<ScriptLanguage::ScriptError>::Element *E = errors.front(); E; E = E->next()) {
|
||||
if (E->get().path.is_empty() || E->get().path != script->get_path()) {
|
||||
if ((E->get().path.is_empty() && !script->get_path().is_empty()) || E->get().path != script->get_path()) {
|
||||
depended_errors[E->get().path].push_back(E->get());
|
||||
E->erase();
|
||||
}
|
||||
}
|
||||
|
||||
// TRANSLATORS: Script error pointing to a line and column number.
|
||||
String error_text = vformat(TTR("Error at (%d, %d):"), errors[0].line, errors[0].column) + " " + errors[0].message;
|
||||
code_editor->set_error(error_text);
|
||||
code_editor->set_error_pos(errors[0].line - 1, errors[0].column - 1);
|
||||
if (errors.size() > 0) {
|
||||
// TRANSLATORS: Script error pointing to a line and column number.
|
||||
String error_text = vformat(TTR("Error at (%d, %d):"), errors[0].line, errors[0].column) + " " + errors[0].message;
|
||||
code_editor->set_error(error_text);
|
||||
code_editor->set_error_pos(errors[0].line - 1, errors[0].column - 1);
|
||||
}
|
||||
script_is_valid = false;
|
||||
} else {
|
||||
code_editor->set_error("");
|
||||
|
Loading…
Reference in New Issue
Block a user