]> git.sur5r.net Git - bacula/bacula/commitdiff
Fix segfault on basejob code
authorEric Bollengier <eric@eb.homelinux.org>
Wed, 11 Nov 2009 16:49:31 +0000 (17:49 +0100)
committerEric Bollengier <eric@eb.homelinux.org>
Wed, 11 Nov 2009 16:49:31 +0000 (17:49 +0100)
bacula/src/cats/sql_get.c

index 0bcba5b91cd48c2be35118cd4db5eb9f018dfceb..340ebd039defc6ce110d27725a09a34245bf9081 100644 (file)
@@ -1224,14 +1224,16 @@ bool db_get_base_file_list(JCR *jcr, B_DB *mdb,
 
 bool db_get_base_jobid(JCR *jcr, B_DB *mdb, JOB_DBR *jr, JobId_t *jobid)
 {
+   POOL_MEM query(PM_FNAME);
+   utime_t StartTime;
+   db_int64_ctx lctx;
    char date[MAX_TIME_LENGTH];
    bool ret=false;
-   int64_t id = *jobid = 0;
-   POOLMEM *query = get_pool_memory(PM_FNAME);
+   *jobid = 0;
 
 // char clientid[50], filesetid[50];
 
-   utime_t StartTime = (jr->StartTime)?jr->StartTime:time(NULL);
+   StartTime = (jr->StartTime)?jr->StartTime:time(NULL);
    bstrutime(date, sizeof(date),  StartTime + 1);
 
    /* we can take also client name, fileset, etc... */
@@ -1251,17 +1253,16 @@ bool db_get_base_jobid(JCR *jcr, B_DB *mdb, JOB_DBR *jr, JobId_t *jobid)
 //      edit_uint64(jr->FileSetId, filesetid));
         date);
 
-   Dmsg1(10, "db_get_base_jobid q=%s\n", query);
-   if (!db_sql_query(mdb, query, db_int64_handler, &id)) {
+   Dmsg1(10, "db_get_base_jobid q=%s\n", query.c_str());
+   if (!db_sql_query(mdb, query.c_str(), db_int64_handler, &lctx)) {
       goto bail_out;
    }
-   *jobid = (JobId_t) id;
+   *jobid = (JobId_t) lctx.value;
 
-   Dmsg1(10, "db_get_base_jobid=%lld\n", id);
+   Dmsg1(10, "db_get_base_jobid=%lld\n", *jobid);
    ret = true;
 
 bail_out:
-   free_pool_memory(query);
    return ret;
 }