Skip to content

Commit 1c332ce

Browse files
authored
Allow non-ASCII environment variables. (#24025)
Fixes: #24024
1 parent 8cb225c commit 1c332ce

20 files changed

+31
-28
lines changed

src/lib/libwasi.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,27 +84,30 @@ var WasiLibrary = {
8484
return getEnvStrings.strings;
8585
},
8686

87-
environ_sizes_get__deps: ['$getEnvStrings'],
87+
environ_sizes_get__deps: ['$getEnvStrings', '$lengthBytesUTF8'],
8888
environ_sizes_get__nothrow: true,
8989
environ_sizes_get: (penviron_count, penviron_buf_size) => {
9090
var strings = getEnvStrings();
9191
{{{ makeSetValue('penviron_count', 0, 'strings.length', SIZE_TYPE) }}};
9292
var bufSize = 0;
93-
strings.forEach((string) => bufSize += string.length + 1);
93+
for (var string of strings) {
94+
bufSize += lengthBytesUTF8(string) + 1;
95+
}
9496
{{{ makeSetValue('penviron_buf_size', 0, 'bufSize', SIZE_TYPE) }}};
9597
return 0;
9698
},
9799

98-
environ_get__deps: ['$getEnvStrings', '$stringToAscii'],
100+
environ_get__deps: ['$getEnvStrings', '$stringToUTF8'],
99101
environ_get__nothrow: true,
100102
environ_get: (__environ, environ_buf) => {
101103
var bufSize = 0;
102-
getEnvStrings().forEach((string, i) => {
104+
var envp = 0;
105+
for (var string of getEnvStrings()) {
103106
var ptr = environ_buf + bufSize;
104-
{{{ makeSetValue('__environ', `i*${POINTER_SIZE}`, 'ptr', POINTER_TYPE) }}};
105-
stringToAscii(string, ptr);
106-
bufSize += string.length + 1;
107-
});
107+
{{{ makeSetValue('__environ', 'envp', 'ptr', POINTER_TYPE) }}};
108+
bufSize += stringToUTF8(string, ptr, Infinity) + 1;
109+
envp += {{{ POINTER_SIZE }}};
110+
}
108111
return 0;
109112
},
110113

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8233
1+
8243
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19989
1+
19969
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8220
1+
8230
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19967
1+
19947
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9231
1+
9233
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
23726
1+
23707
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8176
1+
8187
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
19881
1+
19861
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8176
1+
8187

0 commit comments

Comments
 (0)