// This is sorted.
// grep ICALL_EXPORT | sort | uniq
-ICALL_EXPORT MonoArray* ves_icall_System_Environment_GetEnvironmentVariableNames (void);
-ICALL_EXPORT MonoArray* ves_icall_System_Environment_GetLogicalDrives (void);
ICALL_EXPORT MonoAssemblyName* ves_icall_System_Reflection_AssemblyName_GetNativeName (MonoAssembly*);
ICALL_EXPORT MonoBoolean ves_icall_RuntimeTypeHandle_is_subclass_of (MonoType*, MonoType*);
ICALL_EXPORT MonoBoolean ves_icall_System_Buffer_BlockCopyInternal (MonoArray*, gint32, MonoArray*, gint32, gint32);
NOHANDLES(ICALL(ENV_1, "Exit", ves_icall_System_Environment_Exit))
HANDLES(ENV_1a, "FailFast", ves_icall_System_Environment_FailFast, void, 3, (MonoString, MonoException, MonoString))
HANDLES(ENV_2, "GetCommandLineArgs", ves_icall_System_Environment_GetCommandLineArgs, MonoArray, 0, ())
-ICALL(ENV_3, "GetEnvironmentVariableNames", ves_icall_System_Environment_GetEnvironmentVariableNames)
+HANDLES(ENV_3, "GetEnvironmentVariableNames", ves_icall_System_Environment_GetEnvironmentVariableNames, MonoArray, 0, ())
HANDLES(ENV_8, "InternalSetEnvironmentVariable", ves_icall_System_Environment_InternalSetEnvironmentVariable, void, 4, (const_gunichar2_ptr, gint32, const_gunichar2_ptr, gint32))
NOHANDLES(ICALL(ENV_9, "get_ExitCode", mono_environment_exitcode_get))
NOHANDLES(ICALL(ENV_10, "get_HasShutdownStarted", ves_icall_System_Environment_get_HasShutdownStarted))
NOHANDLES(ICALL(ENV_1, "Exit", ves_icall_System_Environment_Exit))
HANDLES(ENV_1a, "FailFast", ves_icall_System_Environment_FailFast, void, 3, (MonoString, MonoException, MonoString))
HANDLES(ENV_2, "GetCommandLineArgs", ves_icall_System_Environment_GetCommandLineArgs, MonoArray, 0, ())
-ICALL(ENV_3, "GetEnvironmentVariableNames", ves_icall_System_Environment_GetEnvironmentVariableNames)
+HANDLES(ENV_3, "GetEnvironmentVariableNames", ves_icall_System_Environment_GetEnvironmentVariableNames, MonoArray, 0, ())
NOHANDLES(ICALL(ENV_31, "GetIs64BitOperatingSystem", ves_icall_System_Environment_GetIs64BitOperatingSystem))
-ICALL(ENV_4, "GetLogicalDrivesInternal", ves_icall_System_Environment_GetLogicalDrives )
+HANDLES(ENV_4, "GetLogicalDrivesInternal", ves_icall_System_Environment_GetLogicalDrivesInternal, MonoArray, 0, ())
HANDLES_REUSE_WRAPPER(ENV_5, "GetMachineConfigPath", ves_icall_System_Configuration_DefaultConfig_get_machine_config_path, MonoString, 0, ())
HANDLES(ENV_51, "GetNewLine", ves_icall_System_Environment_get_NewLine, MonoString, 0, ())
HANDLES(ENV_6, "GetOSVersionString", ves_icall_System_Environment_GetOSVersionString, MonoString, 0, ())
MonoBoolean
mono_icall_is_64bit_os (void);
-MonoArray *
+MonoArrayHandle
mono_icall_get_environment_variable_names (MonoError *error);
void
#endif
#if !HAVE_API_SUPPORT_WIN32_GET_LOGICAL_DRIVE_STRINGS
-MonoArray *
-mono_icall_get_logical_drives (void)
+MonoArrayHandle
+mono_icall_get_logical_drives (MonoError *error)
{
- ERROR_DECL (error);
-
g_unsupported_api ("GetLogicalDriveStrings");
mono_error_set_not_supported (error, G_UNSUPPORTED_API, "GetLogicalDriveStrings");
- mono_error_set_pending_exception (error);
SetLastError (ERROR_NOT_SUPPORTED);
- return NULL;
+ return NULL_HANDLE_ARRAY;
}
#endif
#endif
}
-MonoArray *
+MonoArrayHandle
mono_icall_get_environment_variable_names (MonoError *error)
{
- MonoArray *names;
+ MonoArrayHandle names;
MonoDomain *domain;
- MonoString *str;
+ MonoStringHandle str;
WCHAR* env_strings;
WCHAR* env_string;
WCHAR* equal_str;
int n = 0;
- error_init (error);
env_strings = GetEnvironmentStrings();
if (env_strings) {
}
domain = mono_domain_get ();
- names = mono_array_new_checked (domain, mono_defaults.string_class, n, error);
- return_val_if_nok (error, NULL);
+ names = mono_array_new_handle (domain, mono_defaults.string_class, n, error);
+ return_val_if_nok (error, NULL_HANDLE_ARRAY);
if (env_strings) {
n = 0;
+ str = MONO_HANDLE_NEW (MonoString, NULL);
env_string = env_strings;
while (*env_string != '\0') {
/* weird case that MS seems to skip */
if (*env_string != '=') {
equal_str = wcschr(env_string, '=');
g_assert(equal_str);
- str = mono_string_new_utf16_checked (domain, env_string, (gint32)(equal_str - env_string), error);
+ MonoString *s = mono_string_new_utf16_checked (domain, env_string, (gint32)(equal_str - env_string), error);
goto_if_nok (error, cleanup);
+ MONO_HANDLE_ASSIGN_RAW (str, s);
- mono_array_setref_internal (names, n, str);
+ mono_array_handle_setref (names, n, str);
n++;
}
while (*env_string != '\0')
if (env_strings)
FreeEnvironmentStrings (env_strings);
if (!is_ok (error))
- return NULL;
+ return NULL_HANDLE_ARRAY;
return names;
}
}
#ifndef HOST_WIN32
-static MonoArray *
+static MonoArrayHandle
mono_icall_get_environment_variable_names (MonoError *error)
{
- MonoArray *names;
+ MonoArrayHandle names;
MonoDomain *domain;
- MonoString *str;
+ MonoStringHandle str;
gchar **e, **parts;
int n;
- error_init (error);
n = 0;
for (e = environ; *e != 0; ++ e)
++ n;
domain = mono_domain_get ();
- names = mono_array_new_checked (domain, mono_defaults.string_class, n, error);
- return_val_if_nok (error, NULL);
+ names = mono_array_new_handle (domain, mono_defaults.string_class, n, error);
+ return_val_if_nok (error, NULL_HANDLE_ARRAY);
+ str = MONO_HANDLE_NEW (MonoString, NULL);
n = 0;
for (e = environ; *e != 0; ++ e) {
parts = g_strsplit (*e, "=", 2);
if (*parts != 0) {
- str = mono_string_new_checked (domain, *parts, error);
+ MonoString *s = mono_string_new_checked (domain, *parts, error);
+ MONO_HANDLE_ASSIGN_RAW (str, s);
if (!is_ok (error)) {
g_strfreev (parts);
- return NULL;
+ return NULL_HANDLE_ARRAY;
}
- mono_array_setref_internal (names, n, str);
+ mono_array_handle_setref (names, n, str);
}
g_strfreev (parts);
}
#endif /* !HOST_WIN32 */
-MonoArray *
-ves_icall_System_Environment_GetEnvironmentVariableNames (void)
+MonoArrayHandle
+ves_icall_System_Environment_GetEnvironmentVariableNames (MonoError *error)
{
- ERROR_DECL (error);
- MonoArray *result = mono_icall_get_environment_variable_names (error);
- mono_error_set_pending_exception (error);
- return result;
+ return mono_icall_get_environment_variable_names (error);
}
void
}
#if G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT)
-static MonoArray *
-mono_icall_get_logical_drives (void)
+static MonoArrayHandle
+mono_icall_get_logical_drives (MonoError *error)
{
- ERROR_DECL (error);
gunichar2 buf [256], *ptr, *dname;
gunichar2 *u16;
guint initial_size = 127, size = 128;
gint ndrives;
- MonoArray *result;
- MonoString *drivestr;
+ MonoArrayHandle result;
+ MonoStringHandle drivestr;
MonoDomain *domain = mono_domain_get ();
gint len;
} while (*dname);
dname = ptr;
- result = mono_array_new_checked (domain, mono_defaults.string_class, ndrives, error);
- if (mono_error_set_pending_exception (error))
- goto leave;
+ result = mono_array_new_handle (domain, mono_defaults.string_class, ndrives, error);
+ goto_if_nok (error, leave);
+ drivestr = MONO_HANDLE_NEW (MonoString, NULL);
ndrives = 0;
do {
len = 0;
u16 = dname;
- while (*u16) { u16++; len ++; }
- drivestr = mono_string_new_utf16_checked (domain, dname, len, error);
- if (mono_error_set_pending_exception (error))
- goto leave;
+ while (*u16) {
+ u16++; len ++;
+ }
+ MonoString *s = mono_string_new_utf16_checked (domain, dname, len, error);
+ goto_if_nok (error, leave);
+ MONO_HANDLE_ASSIGN_RAW (drivestr, s);
- mono_array_setref_internal (result, ndrives++, drivestr);
+ mono_array_handle_setref (result, ndrives, drivestr);
+ ndrives ++;
while (*dname++);
} while (*dname);
}
#endif /* G_HAVE_API_SUPPORT(HAVE_CLASSIC_WINAPI_SUPPORT) */
-MonoArray *
-ves_icall_System_Environment_GetLogicalDrives (void)
+MonoArrayHandle
+ves_icall_System_Environment_GetLogicalDrivesInternal (MonoError *error)
{
- return mono_icall_get_logical_drives ();
+ return mono_icall_get_logical_drives (error);
}
MonoStringHandle