diff --git a/app/pdb/gimp-cmds.c b/app/pdb/gimp-cmds.c index 713f3f7ba6..1d09d3c024 100644 --- a/app/pdb/gimp-cmds.c +++ b/app/pdb/gimp-cmds.c @@ -223,7 +223,7 @@ temp_file_invoker (GimpProcedure *procedure, error ? *error : NULL); if (success) - g_value_set_object (gimp_value_array_index (return_vals, 1), file); + g_value_take_object (gimp_value_array_index (return_vals, 1), file); return return_vals; } diff --git a/app/pdb/image-cmds.c b/app/pdb/image-cmds.c index eda00515b7..ab88ff77b0 100644 --- a/app/pdb/image-cmds.c +++ b/app/pdb/image-cmds.c @@ -2318,13 +2318,15 @@ image_get_file_invoker (GimpProcedure *procedure, if (success) { file = gimp_image_get_any_file (image); + if (file) + g_object_ref (file); } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) - g_value_set_object (gimp_value_array_index (return_vals, 1), file); + g_value_take_object (gimp_value_array_index (return_vals, 1), file); return return_vals; } @@ -2396,13 +2398,15 @@ image_get_xcf_file_invoker (GimpProcedure *procedure, if (success) { file = gimp_image_get_file (image); + if (file) + g_object_ref (file); } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) - g_value_set_object (gimp_value_array_index (return_vals, 1), file); + g_value_take_object (gimp_value_array_index (return_vals, 1), file); return return_vals; } @@ -2425,13 +2429,15 @@ image_get_imported_file_invoker (GimpProcedure *procedure, if (success) { file = gimp_image_get_imported_file (image); + if (file) + g_object_ref (file); } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) - g_value_set_object (gimp_value_array_index (return_vals, 1), file); + g_value_take_object (gimp_value_array_index (return_vals, 1), file); return return_vals; } @@ -2454,13 +2460,15 @@ image_get_exported_file_invoker (GimpProcedure *procedure, if (success) { file = gimp_image_get_exported_file (image); + if (file) + g_object_ref (file); } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) - g_value_set_object (gimp_value_array_index (return_vals, 1), file); + g_value_take_object (gimp_value_array_index (return_vals, 1), file); return return_vals; } diff --git a/app/pdb/link-layer-cmds.c b/app/pdb/link-layer-cmds.c index 8c1a65b4b4..235b35ee97 100644 --- a/app/pdb/link-layer-cmds.c +++ b/app/pdb/link-layer-cmds.c @@ -166,14 +166,14 @@ link_layer_get_file_invoker (GimpProcedure *procedure, if (success) { - file = gimp_link_get_file (gimp_link_layer_get_link (layer), NULL, NULL); + file = g_object_ref (gimp_link_get_file (gimp_link_layer_get_link (layer), NULL, NULL)); } return_vals = gimp_procedure_get_return_values (procedure, success, error ? *error : NULL); if (success) - g_value_set_object (gimp_value_array_index (return_vals, 1), file); + g_value_take_object (gimp_value_array_index (return_vals, 1), file); return return_vals; } diff --git a/pdb/groups/image.pdb b/pdb/groups/image.pdb index 339a859529..34f06484a8 100644 --- a/pdb/groups/image.pdb +++ b/pdb/groups/image.pdb @@ -2414,6 +2414,8 @@ HELP code => <<'CODE' { file = gimp_image_get_any_file (image); + if (file) + g_object_ref (file); } CODE ); @@ -2500,6 +2502,8 @@ HELP code => <<'CODE' { file = gimp_image_get_file (image); + if (file) + g_object_ref (file); } CODE ); @@ -2534,6 +2538,8 @@ HELP code => <<'CODE' { file = gimp_image_get_imported_file (image); + if (file) + g_object_ref (file); } CODE ); @@ -2567,6 +2573,8 @@ HELP code => <<'CODE' { file = gimp_image_get_exported_file (image); + if (file) + g_object_ref (file); } CODE ); diff --git a/pdb/groups/link_layer.pdb b/pdb/groups/link_layer.pdb index 6fde88cfc2..84b9936bf6 100644 --- a/pdb/groups/link_layer.pdb +++ b/pdb/groups/link_layer.pdb @@ -161,7 +161,7 @@ HELP %invoke = ( code => <<'CODE' { - file = gimp_link_get_file (gimp_link_layer_get_link (layer), NULL, NULL); + file = g_object_ref (gimp_link_get_file (gimp_link_layer_get_link (layer), NULL, NULL)); } CODE ); diff --git a/pdb/pdb.pl b/pdb/pdb.pl index a1a108cadb..2aeb5bbc8f 100644 --- a/pdb/pdb.pl +++ b/pdb/pdb.pl @@ -488,7 +488,7 @@ package Gimp::CodeGen::pdb; get_value_func => '$var = g_value_get_object ($value)', dup_value_func => '$var = GIMP_VALUES_DUP_FILE ($value)', set_value_func => 'g_value_set_object ($value, $var)', - take_value_func => 'g_value_set_object ($value, $var)' }, + take_value_func => 'g_value_take_object ($value, $var)' }, parasite => { name => 'PARASITE', gtype => 'GIMP_TYPE_PARASITE',