diff options
Diffstat (limited to 'drivers/unix/os_unix.cpp')
-rw-r--r-- | drivers/unix/os_unix.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index 8126f74332..74b703b09e 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -639,7 +639,7 @@ String OS_Unix::get_locale() const { return locale; } -Error OS_Unix::open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path, String *r_resolved_path) { +Error OS_Unix::open_dynamic_library(const String &p_path, void *&p_library_handle, bool p_also_set_library_path, String *r_resolved_path) { String path = p_path; if (FileAccess::exists(path) && path.is_relative_path()) { @@ -677,7 +677,7 @@ Error OS_Unix::close_dynamic_library(void *p_library_handle) { return OK; } -Error OS_Unix::get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional) { +Error OS_Unix::get_dynamic_library_symbol_handle(void *p_library_handle, const String &p_name, void *&p_symbol_handle, bool p_optional) { const char *error; dlerror(); // Clear existing errors @@ -705,10 +705,15 @@ bool OS_Unix::has_environment(const String &p_var) const { } String OS_Unix::get_environment(const String &p_var) const { - if (getenv(p_var.utf8().get_data())) { - return getenv(p_var.utf8().get_data()); + const char *val = getenv(p_var.utf8().get_data()); + if (val == nullptr) { // Not set; return empty string + return ""; } - return ""; + String s; + if (s.parse_utf8(val) == OK) { + return s; + } + return String(val); // Not valid UTF-8, so return as-is } void OS_Unix::set_environment(const String &p_var, const String &p_value) const { |