(In reply to Karl Tomlinson (:karlt) from comment #66)
> Comment on attachment 681454
> fix for gconf v2
>
> >+ /* This check is to avoid bug #541130 when old version of gnomevfs (2.16 tested)
> >+ is installed then error window pops up if scheme is containing '+' character.
> >+ Let's pretend these kind of schemes are not supported by gnomevfs. */
>
> Are you sure gnomevfs is involved in gconf_client_get_* calls?
> Can you point me at the GConf code that uses GnomeVFS, please?
Sorry, I've got confused with gnomevfs (for some reason I thought gconf was part of it). The comment is invalid. This is issue with gconf of course.
>
> > GError *err = nullptr;
> > gchar *command = gconf_client_get_string(mClient, key.get(), &err);
> > if (!err && command) {
> > key.Replace(key.Length() - 7, 7, NS_LITERAL_CSTRING("enabled"));
>
> Can you explain, please, why a dialog would be shown when there is a GError
> parameter passed to the gconf_client_get_* functions?
>
> (Removing review request for now until we understand what is happening.)
I've looked into it deeper into gconf code and it seems there's a bug with forwarding GError value:
gconf_client_get_string(GConfClient* client, const gchar* key, GError** err)
{
GError* error = NULL;
GConfValue* val;
See passing of error variable, it should most likely be:
val = gconf_client_get (client, key, &error);
When the error is NULL the handle_error use gconf_client_unreturned_error to emit unreturned error signal which subsequently leads into showing the error message.
This is valid for older gconf2 library (in my case GConf2-2.14.0). So the patch is actually workaround for systems where these old libraries are. We should probably push on gconf2 package maintainers to fix this issue in gconf2.
(In reply to Karl Tomlinson (:karlt) from comment #66) get_string( mClient, key.get(), &err); key.Length( ) - 7, 7, NS_LITERAL_ CSTRING( "enabled" ));
> Comment on attachment 681454
> fix for gconf v2
>
> >+ /* This check is to avoid bug #541130 when old version of gnomevfs (2.16 tested)
> >+ is installed then error window pops up if scheme is containing '+' character.
> >+ Let's pretend these kind of schemes are not supported by gnomevfs. */
>
> Are you sure gnomevfs is involved in gconf_client_get_* calls?
> Can you point me at the GConf code that uses GnomeVFS, please?
Sorry, I've got confused with gnomevfs (for some reason I thought gconf was part of it). The comment is invalid. This is issue with gconf of course.
>
> > GError *err = nullptr;
> > gchar *command = gconf_client_
> > if (!err && command) {
> > key.Replace(
>
> Can you explain, please, why a dialog would be shown when there is a GError
> parameter passed to the gconf_client_get_* functions?
>
> (Removing review request for now until we understand what is happening.)
I've looked into it deeper into gconf code and it seems there's a bug with forwarding GError value: get_string( GConfClient* client, const gchar* key,
GError* * err)
gconf_client_
{
GError* error = NULL;
GConfValue* val;
g_return_ val_if_ fail (err == NULL || *err == NULL, NULL);
val = gconf_client_get (client, key, error);
gconf_client_get (GConfClient* client,
const gchar* key,
GError* * err) val_if_ fail (GCONF_IS_CLIENT (client), NULL); val_if_ fail (key != NULL, NULL); get_full (client, key, NULL, TRUE, err);
{
g_return_
g_return_
return gconf_client_
}
See passing of error variable, it should most likely be:
val = gconf_client_get (client, key, &error);
When the error is NULL the handle_error use gconf_client_ unreturned_ error to emit unreturned error signal which subsequently leads into showing the error message.
This is valid for older gconf2 library (in my case GConf2-2.14.0). So the patch is actually workaround for systems where these old libraries are. We should probably push on gconf2 package maintainers to fix this issue in gconf2.