[gimp] libgimp: pass the GimpValueArray to gimp_set_pdb_error()



commit 39ee40b1f0bf29a3dab6c3d653c59bd5ca5d7427
Author: Michael Natterer <mitch gimp org>
Date:   Mon Jul 29 12:42:47 2019 +0200

    libgimp: pass the GimpValueArray to gimp_set_pdb_error()
    
    not the cruft GimpParam array.

 libgimp/gimp.c | 48 +++++++++++++++++++++++++-----------------------
 1 file changed, 25 insertions(+), 23 deletions(-)
---
diff --git a/libgimp/gimp.c b/libgimp/gimp.c
index 9ea95e3d5a..7316b73d33 100644
--- a/libgimp/gimp.c
+++ b/libgimp/gimp.c
@@ -205,8 +205,7 @@ static gboolean   gimp_extension_read          (GIOChannel      *channel,
                                                 GIOCondition     condition,
                                                 gpointer         data);
 
-static void       gimp_set_pdb_error           (const GimpParam *return_vals,
-                                                gint             n_return_vals);
+static void       gimp_set_pdb_error           (GimpValueArray  *return_vals);
 
 static gpointer   gimp_param_copy              (gpointer         boxed);
 static void       gimp_param_free              (gpointer         boxed);
@@ -1511,11 +1510,11 @@ gimp_run_procedure2 (const gchar     *name,
   *n_return_vals = gimp_value_array_length (return_values);
   return_vals    = _gimp_value_array_to_params (return_values, TRUE);
 
+  gimp_set_pdb_error (return_values);
+
   gimp_value_array_unref (return_values);
   gimp_wire_destroy (&msg);
 
-  gimp_set_pdb_error (return_vals, *n_return_vals);
-
   return return_vals;
 }
 
@@ -2828,31 +2827,34 @@ gimp_extension_read (GIOChannel  *channel,
 }
 
 static void
-gimp_set_pdb_error (const GimpParam *return_vals,
-                    gint             n_return_vals)
+gimp_set_pdb_error (GimpValueArray *return_values)
 {
-  if (pdb_error_message)
-    {
-      g_free (pdb_error_message);
-      pdb_error_message = NULL;
-    }
-
-  pdb_error_status = return_vals[0].data.d_status;
+  g_clear_pointer (&pdb_error_message, g_free);
+  pdb_error_status = GIMP_PDB_SUCCESS;
 
-  switch (pdb_error_status)
+  if (gimp_value_array_length (return_values) > 0)
     {
-    case GIMP_PDB_SUCCESS:
-    case GIMP_PDB_PASS_THROUGH:
-      break;
+      pdb_error_status =
+        g_value_get_enum (gimp_value_array_index (return_values, 0));
 
-    case GIMP_PDB_EXECUTION_ERROR:
-    case GIMP_PDB_CALLING_ERROR:
-    case GIMP_PDB_CANCEL:
-      if (n_return_vals > 1 && return_vals[1].type == GIMP_PDB_STRING)
+      switch (pdb_error_status)
         {
-          pdb_error_message = g_strdup (return_vals[1].data.d_string);
+        case GIMP_PDB_SUCCESS:
+        case GIMP_PDB_PASS_THROUGH:
+          break;
+
+        case GIMP_PDB_EXECUTION_ERROR:
+        case GIMP_PDB_CALLING_ERROR:
+        case GIMP_PDB_CANCEL:
+          if (gimp_value_array_length (return_values) > 1)
+            {
+              GValue *value = gimp_value_array_index (return_values, 1);
+
+              if (G_VALUE_HOLDS_STRING (value))
+                pdb_error_message = g_value_dup_string (value);
+            }
+          break;
         }
-      break;
     }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]