Fix a crash caused by using the old JobRemoved signature in JobManager
authorJannis Pohlmann <jannis.pohlmann@codethink.co.uk>
Sat, 28 Jul 2012 15:27:08 +0000 (16:27 +0100)
committerJannis Pohlmann <jannis.pohlmann@codethink.co.uk>
Sat, 28 Jul 2012 15:27:08 +0000 (16:27 +0100)
The signature of the JobRemoved signal recently changed in systemd, when
a new "unit" parameter was added. This commit changes the JobManager to
include this parameter in its JobRemoved handler and thereby avoids
segmentation faults caused by assuming fourth parameter is a JobManager
object.

boot-manager/job-manager.c

index 0707cf5..f66247a 100644 (file)
@@ -52,6 +52,7 @@ static void           job_manager_stop_unit_reply  (GObject           *object,
 static void           job_manager_job_removed      (SystemdManager    *systemd_manager,
                                                     guint              id,
                                                     const gchar       *job_name,
+                                                    const gchar       *unit,
                                                     const gchar       *result,
                                                     JobManager        *job_manager);
 static JobManagerJob *job_manager_job_new          (JobManager        *manager,
@@ -302,6 +303,7 @@ static void
 job_manager_job_removed (SystemdManager *systemd_manager,
                          guint           id,
                          const gchar    *job_name,
+                         const gchar    *unit,
                          const gchar    *result,
                          JobManager     *job_manager)
 {
@@ -310,6 +312,7 @@ job_manager_job_removed (SystemdManager *systemd_manager,
   g_return_if_fail (IS_SYSTEMD_MANAGER (systemd_manager));
   g_return_if_fail (job_name != NULL && *job_name != '\0');
   g_return_if_fail (result != NULL && *result != '\0');
+  g_return_if_fail (unit != NULL && *unit != '\0');
   g_return_if_fail (IS_JOB_MANAGER (job_manager));
 
   /* look up the remembered job for this job name */