summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-03-11 14:02:22 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-03-11 14:02:22 +0100
commitb0d07b1bc2cf80691f8f1916b93f28ec90b8799b (patch)
tree9c6e63f497ea7af1645fa4aaf834071b16fc21c6 /drivers
parent9a098458cc00a80114f25417e430943a371fb387 (diff)
parenta4c5dae8cb67fca6ab72364f288e694e8970f840 (diff)
downloadredot-engine-b0d07b1bc2cf80691f8f1916b93f28ec90b8799b.tar.gz
Merge pull request #86936 from akx/env-utf-8
Attempt parsing environment variables as UTF-8
Diffstat (limited to 'drivers')
-rw-r--r--drivers/unix/os_unix.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp
index 83a332dea9..74b703b09e 100644
--- a/drivers/unix/os_unix.cpp
+++ b/drivers/unix/os_unix.cpp
@@ -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 {