It turns out that _gnome_vfs_uri_resolve_all_symlinks_uri used to unref an URI before accessing its uri->text. This is bad of course if its refcount is 1. Proposed patch attached, which fixes bug 318457 [1]. We could have saved the new_uri unref/ref if we introduced an additional variable instead of using the (later unrefed) new_uri. However, 3 local URI variables in this function are definitly confusing enough. [1] http://bugzilla.gnome.org/show_bug.cgi?id=318457 -- Christian Neumair <chris gnome-de org>
Index: libgnomevfs/gnome-vfs-utils.c =================================================================== RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-utils.c,v retrieving revision 1.102 diff -u -p -r1.102 gnome-vfs-utils.c --- libgnomevfs/gnome-vfs-utils.c 15 Sep 2005 11:02:53 -0000 1.102 +++ libgnomevfs/gnome-vfs-utils.c 10 Oct 2005 19:37:24 -0000 @@ -1991,9 +1993,14 @@ _gnome_vfs_uri_resolve_all_symlinks_uri resolved_uri = gnome_vfs_uri_resolve_relative (new_uri, info->symlink_name); if (*p != 0) { + gnome_vfs_uri_unref (new_uri); + + new_uri = gnome_vfs_uri_append_string (resolved_uri, p); + gnome_vfs_uri_unref (uri); - uri = gnome_vfs_uri_append_string (resolved_uri, p); gnome_vfs_uri_unref (resolved_uri); + + uri = gnome_vfs_uri_ref (new_uri); } else { gnome_vfs_uri_unref (uri); uri = resolved_uri;
Attachment:
signature.asc
Description: This is a digitally signed message part