char* win_build_environment(char* new_env) { if (new_env == NULL) { return NULL; } else { char *tmp, *merged; erts_smp_rwmtx_rlock(&environ_rwmtx); tmp = GetEnvironmentStrings(); merged = merge_environment(tmp, new_env); FreeEnvironmentStrings(tmp); erts_smp_rwmtx_runlock(&environ_rwmtx); return merged; } }
char* win_build_environment(char* new_env) { if (new_env == NULL) { return NULL; } else { WCHAR *tmp, *merged, *tmp_new; tmp_new = (WCHAR *) new_env; erts_rwmtx_rlock(&environ_rwmtx); tmp = GetEnvironmentStringsW(); merged = merge_environment(tmp, tmp_new); FreeEnvironmentStringsW(tmp); erts_rwmtx_runlock(&environ_rwmtx); return (char *) merged; } }