From: Michal Rakowski Date: Thu, 1 Jul 2021 20:14:39 +0000 (+0200) Subject: Fix memory leak for Storage Manager X-Git-Tag: Release-11.3.2~462 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d13c1e52f84090e5db1bcb489a63d08a69148447;p=thirdparty%2Fbacula.git Fix memory leak for Storage Manager --- diff --git a/bacula/src/dird/job.c b/bacula/src/dird/job.c index b86dd997b..6e9391e01 100644 --- a/bacula/src/dird/job.c +++ b/bacula/src/dird/job.c @@ -1624,6 +1624,16 @@ void get_job_storage(USTORE *store, JOB *job, RUN *run) /* Init storage manager with specified storage group policy */ static void init_store_manager(JCR *jcr, const char *policy) { + if (jcr->store_mngr) { + if (strcmp(jcr->store_mngr->get_policy_name(), policy) == 0) { + /* Already instantiated manager is of the exact type we need, no work needed here */ + return; + } else { + /* Destroy old manager to loose pointer of the previous one since new one will be initialized */ + delete jcr->store_mngr; + } + } + if (policy) { if (strcmp(policy, "LeastUsed") == 0) { Dmsg1(dbglvl_store_mngr, "Setting LeastUsed storage group policy for JobId: %d\n", jcr->JobId);