Просмотр исходного кода

updating WASI stdio handle initialization and build options for UVWASI (#4260)

liang.he 7 месяцев назад
Родитель
Сommit
207da7b22f

+ 7 - 1
core/iwasm/aot/aot_loader.c

@@ -4128,10 +4128,16 @@ create_module(char *name, char *error_buf, uint32 error_buf_size)
 #endif
 
 #if WASM_ENABLE_LIBC_WASI != 0
+#if WASM_ENABLE_UVWASI == 0
     module->wasi_args.stdio[0] = os_invalid_raw_handle();
     module->wasi_args.stdio[1] = os_invalid_raw_handle();
     module->wasi_args.stdio[2] = os_invalid_raw_handle();
-#endif
+#else
+    module->wasi_args.stdio[0] = os_get_invalid_handle();
+    module->wasi_args.stdio[1] = os_get_invalid_handle();
+    module->wasi_args.stdio[2] = os_get_invalid_handle();
+#endif /* WASM_ENABLE_UVWASI == 0 */
+#endif /* WASM_ENABLE_LIBC_WASI != 0 */
 
     return module;
 #if WASM_ENABLE_GC != 0

+ 9 - 5
core/iwasm/common/wasm_runtime_common.c

@@ -3886,11 +3886,15 @@ wasm_runtime_init_wasi(WASMModuleInstanceCommon *module_inst,
     init_options.allocator = &uvwasi_allocator;
     init_options.argc = argc;
     init_options.argv = (const char **)argv;
-    init_options.in = (stdinfd != -1) ? (uvwasi_fd_t)stdinfd : init_options.in;
-    init_options.out =
-        (stdoutfd != -1) ? (uvwasi_fd_t)stdoutfd : init_options.out;
-    init_options.err =
-        (stderrfd != -1) ? (uvwasi_fd_t)stderrfd : init_options.err;
+    init_options.in = (stdinfd != os_get_invalid_handle())
+                          ? (uvwasi_fd_t)stdinfd
+                          : init_options.in;
+    init_options.out = (stdoutfd != os_get_invalid_handle())
+                           ? (uvwasi_fd_t)stdoutfd
+                           : init_options.out;
+    init_options.err = (stderrfd != os_get_invalid_handle())
+                           ? (uvwasi_fd_t)stderrfd
+                           : init_options.err;
 
     if (dir_count > 0) {
         init_options.preopenc = dir_count;

+ 7 - 1
core/iwasm/interpreter/wasm_loader.c

@@ -6404,10 +6404,16 @@ create_module(char *name, char *error_buf, uint32 error_buf_size)
 #endif
 
 #if WASM_ENABLE_LIBC_WASI != 0
+#if WASM_ENABLE_UVWASI == 0
     module->wasi_args.stdio[0] = os_invalid_raw_handle();
     module->wasi_args.stdio[1] = os_invalid_raw_handle();
     module->wasi_args.stdio[2] = os_invalid_raw_handle();
-#endif
+#else
+    module->wasi_args.stdio[0] = os_get_invalid_handle();
+    module->wasi_args.stdio[1] = os_get_invalid_handle();
+    module->wasi_args.stdio[2] = os_get_invalid_handle();
+#endif /* WASM_ENABLE_UVWASI == 0 */
+#endif /* WASM_ENABLE_LIBC_WASI != 0 */
 
     (void)ret;
     return module;

+ 7 - 1
core/iwasm/interpreter/wasm_mini_loader.c

@@ -3140,10 +3140,16 @@ create_module(char *name, char *error_buf, uint32 error_buf_size)
 #endif
 
 #if WASM_ENABLE_LIBC_WASI != 0
+#if WASM_ENABLE_LIBC_UVWASI == 0
     module->wasi_args.stdio[0] = os_invalid_raw_handle();
     module->wasi_args.stdio[1] = os_invalid_raw_handle();
     module->wasi_args.stdio[2] = os_invalid_raw_handle();
-#endif
+#else
+    module->wasi_args.stdio[0] = os_get_invalid_handle();
+    module->wasi_args.stdio[1] = os_get_invalid_handle();
+    module->wasi_args.stdio[2] = os_get_invalid_handle();
+#endif /* WASM_ENABLE_UVWASI == 0 */
+#endif /* WASM_ENABLE_LIBC_WASI != 0 */
 
     (void)ret;
     return module;