summaryrefslogtreecommitdiffstats
path: root/drivers/unix/os_unix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/unix/os_unix.cpp')
-rw-r--r--drivers/unix/os_unix.cpp15
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 {