* file-io.c, appdomain.c: memory leak fixes.
svn path=/trunk/mono/; revision=83394
+
+Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+ * file-io.c, appdomain.c: memory leak fixes.
+
2007-08-02 Dick Porter <dick@ximian.com>
* socket-io.c
char name_hash [9];
char path_hash [30];
char *bname = g_path_get_basename (filename);
+ char *dirname = g_path_get_dirname (filename);
+ char *location, *dyn_base;
MonoDomain *domain = mono_domain_get ();
hash = get_cstring_hash (bname);
- hash2 = get_cstring_hash (g_path_get_dirname (filename));
+ hash2 = get_cstring_hash (dirname);
g_snprintf (name_hash, sizeof (name_hash), "%08x", hash);
g_snprintf (path_hash, sizeof (path_hash), "%08x_%08x_%08x", hash ^ hash2, hash2, domain->shadow_serial);
- return g_build_filename (mono_string_to_utf8 (domain->setup->dynamic_base),
- "assembly",
- "shadow",
- name_hash,
- path_hash,
- bname,
- NULL);
+ dyn_base = mono_string_to_utf8 (domain->setup->dynamic_base);
+ location = g_build_filename (dyn_base, "assembly", "shadow", name_hash, path_hash, bname, NULL);
+ g_free (dyn_base);
+ g_free (bname);
+ g_free (dirname);
+ return location;
}
static gboolean
if (FindClose (find_handle) == FALSE) {
*error = GetLastError ();
- g_ptr_array_free (names, TRUE);
- g_free (utf8_path);
- return(NULL);
+ result = NULL;
+ } else {
+ result = mono_array_new (domain, mono_defaults.string_class, names->len);
+ for (i = 0; i < names->len; i++) {
+ mono_array_setref (result, i, mono_string_new (domain, g_ptr_array_index (names, i)));
+ }
}
- result = mono_array_new (domain, mono_defaults.string_class,
- names->len);
for (i = 0; i < names->len; i++) {
- mono_array_setref (result, i, mono_string_new (domain, g_ptr_array_index (names, i)));
+ g_free (g_ptr_array_index (names, i));
}
-
g_ptr_array_free (names, TRUE);
g_free (utf8_path);