diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/io/resource_loader.cpp | 3 | ||||
| -rw-r--r-- | core/os/file_access.cpp | 2 | ||||
| -rw-r--r-- | core/os/os.cpp | 7 | ||||
| -rw-r--r-- | core/os/os.h | 9 | ||||
| -rw-r--r-- | core/project_settings.cpp | 3 | ||||
| -rw-r--r-- | core/reference.cpp | 3 | ||||
| -rw-r--r-- | core/script_debugger_remote.cpp | 2 | ||||
| -rw-r--r-- | core/variant_parser.cpp | 4 |
8 files changed, 28 insertions, 5 deletions
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index 285cc6e3c2..9b89fa3399 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -430,6 +430,9 @@ void ResourceLoader::reload_translation_remaps() { void ResourceLoader::load_translation_remaps() { + if (!ProjectSettings::get_singleton()->has("locale/translation_remaps")) + return; + Dictionary remaps = ProjectSettings::get_singleton()->get("locale/translation_remaps"); List<Variant> keys; remaps.get_key_list(&keys); diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp index 2bb676381f..7f5a84843c 100644 --- a/core/os/file_access.cpp +++ b/core/os/file_access.cpp @@ -300,6 +300,8 @@ Vector<String> FileAccess::get_csv_line(String delim) const { String l; int qc = 0; do { + ERR_FAIL_COND_V(eof_reached(), Vector<String>()); + l += get_line() + "\n"; qc = 0; for (int i = 0; i < l.length(); i++) { diff --git a/core/os/os.cpp b/core/os/os.cpp index 5a9766891d..8e4c357195 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -512,7 +512,13 @@ bool OS::check_feature_support(const String &p_feature) { return false; } +void *OS::get_stack_bottom() const { + return _stack_bottom; +} + OS::OS() { + void *volatile stack_bottom; + last_error = NULL; singleton = this; _keep_screen_on = true; // set default value to true, because this had been true before godot 2.0. @@ -525,6 +531,7 @@ OS::OS() { _render_thread_mode = RENDER_THREAD_SAFE; _allow_hidpi = true; + _stack_bottom = (void *)(&stack_bottom); } OS::~OS() { diff --git a/core/os/os.h b/core/os/os.h index 362fec8a9e..957c1d0ba7 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -60,6 +60,8 @@ class OS { char *last_error; + void *_stack_bottom; + public: enum RenderThreadMode { @@ -411,6 +413,13 @@ public: bool check_feature_support(const String &p_feature); + /** + * Returns the stack bottom of the main thread of the application. + * This may be of use when integrating languages with garbage collectors that + * need to check whether a pointer is on the stack. + */ + virtual void *get_stack_bottom() const; + bool is_hidpi_allowed() const { return _allow_hidpi; } OS(); virtual ~OS(); diff --git a/core/project_settings.cpp b/core/project_settings.cpp index 1a0a50a10f..0426af3fa0 100644 --- a/core/project_settings.cpp +++ b/core/project_settings.cpp @@ -602,7 +602,8 @@ Error ProjectSettings::_save_settings_text(const String &p_file, const Map<Strin file->store_string("config_version=" + itos(FORMAT_VERSION) + "\n"); if (p_custom_features != String()) - file->store_string("_custom_featores=\"" + p_custom_features + "\"\n"); + file->store_string("custom_features=\"" + p_custom_features + "\"\n"); + file->store_string("\n"); for (Map<String, List<String> >::Element *E = props.front(); E; E = E->next()) { diff --git a/core/reference.cpp b/core/reference.cpp index c55f8a7fe3..060608eacb 100644 --- a/core/reference.cpp +++ b/core/reference.cpp @@ -74,7 +74,8 @@ bool Reference::unreference() { bool die = refcount.unref(); if (get_script_instance()) { - die = die && get_script_instance()->refcount_decremented(); + bool script_ret = get_script_instance()->refcount_decremented(); + die = die && script_ret; } return die; diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp index a7b6f25590..dec41e7976 100644 --- a/core/script_debugger_remote.cpp +++ b/core/script_debugger_remote.cpp @@ -74,7 +74,7 @@ Error ScriptDebuggerRemote::connect_to_host(const String &p_host, uint16_t p_por } else { OS::get_singleton()->delay_usec(1000000); - print_line("Remote Debugger: Connection failed with status: " + String::num(tcp_client->get_status()) + "'', retrying in 1 sec."); + print_line("Remote Debugger: Connection failed with status: '" + String::num(tcp_client->get_status()) + "', retrying in 1 sec."); }; }; diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp index 26a6a05a30..398f20caf3 100644 --- a/core/variant_parser.cpp +++ b/core/variant_parser.cpp @@ -1099,7 +1099,7 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream, return OK; - } else if (id == "PoolFloatArray" || id == "FloatArray") { + } else if (id == "PoolRealArray" || id == "FloatArray") { Vector<float> args; Error err = _parse_construct<float>(p_stream, args, line, r_err_str); @@ -1855,7 +1855,7 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str } break; case Variant::POOL_REAL_ARRAY: { - p_store_string_func(p_store_string_ud, "PoolFloatArray( "); + p_store_string_func(p_store_string_ud, "PoolRealArray( "); PoolVector<real_t> data = p_variant; int len = data.size(); PoolVector<real_t>::Read r = data.read(); |