jreznik pushed to taskjuggler (epel7). "- buildrequire gettext for untranslated .po file (..more)"

notifications at fedoraproject.org notifications at fedoraproject.org
Thu Apr 2 16:17:13 UTC 2015


>From ae602dca9a521b2724c2a19e5c5bb835009540d9 Mon Sep 17 00:00:00 2001
From: Jens Petersen <petersen at fedoraproject.org>
Date: Fri, 8 Jun 2007 05:57:07 +0000
Subject: - buildrequire gettext for untranslated .po file Thu Jun 7 2007
 Ondrej Vasik <ovasik at redhat.com> -2.3.1-2 - fixed number of memory leaks
 (from upstream) - removed _smp_mflags to avoid build failures with 4+ cpus
 (#233028)


diff --git a/taskjuggler-2.3.1-memoryleakspackage.patch b/taskjuggler-2.3.1-memoryleakspackage.patch
new file mode 100644
index 0000000..d41f4a5
--- /dev/null
+++ b/taskjuggler-2.3.1-memoryleakspackage.patch
@@ -0,0 +1,1156 @@
+diff -urp b/taskjuggler/Account.cpp a/taskjuggler/Account.cpp
+--- b/taskjuggler/Account.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/Account.cpp	2007-06-01 14:25:25.000000000 +0200
+@@ -20,6 +20,7 @@ Account::Account(Project* p, const QStri
+                  AccountType at, const QString& df, uint dl) :
+     CoreAttributes(p, i, n, pr, df, dl), acctType(at)
+ {
++    transactions.setAutoDelete(TRUE);
+     p->addAccount(this);
+     kotrusId = "";
+ }
+diff -urp b/taskjuggler/Allocation.cpp a/taskjuggler/Allocation.cpp
+--- b/taskjuggler/Allocation.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/Allocation.cpp	2007-06-01 14:44:19.000000000 +0200
+@@ -61,6 +61,13 @@ Allocation::Allocation(const Allocation&
+         limits = 0;
+ }
+ 
++void
++Allocation::setLimits(UsageLimits* l)
++{
++	delete limits;
++	limits = l;
++}
++
+ bool
+ Allocation::isWorker() const
+ {
+diff -urp b/taskjuggler/Allocation.h a/taskjuggler/Allocation.h
+--- b/taskjuggler/Allocation.h	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/Allocation.h	2007-06-01 14:44:19.000000000 +0200
+@@ -28,7 +28,7 @@ public:
+ 
+     ~Allocation();
+ 
+-    void setLimits(UsageLimits* l) { limits = l; }
++    void setLimits(UsageLimits* l);
+     const UsageLimits* getLimits() const { return limits; }
+ 
+     void setPersistent(bool p) { persistent = p; }
+diff -urp b/taskjuggler/Booking.h a/taskjuggler/Booking.h
+--- b/taskjuggler/Booking.h	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/Booking.h	2007-06-01 14:35:19.000000000 +0200
+@@ -32,7 +32,7 @@ public:
+     Booking(Interval* iv, Task* t) : SbBooking(t), interval(iv) { }
+     Booking(const Interval& iv, SbBooking* sb) : SbBooking(*sb),
+             interval(new Interval(iv)) { }
+-    ~Booking() { delete interval; }
++    virtual ~Booking() { delete interval; }
+ 
+     time_t getStart() const { return interval->getStart(); }
+     time_t getEnd() const { return interval->getEnd(); }
+diff -urp b/taskjuggler/CSVReportElement.cpp a/taskjuggler/CSVReportElement.cpp
+--- b/taskjuggler/CSVReportElement.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/CSVReportElement.cpp	2007-06-01 14:25:25.000000000 +0200
+@@ -213,6 +213,8 @@ CSVReportElement::generateTitle(TableCel
+     cellText = filter(cellText);
+ 
+     s() << "\"" << cellText << "\"";
++
++    delete sl;
+ }
+ 
+ void
+diff -urp b/taskjuggler/ExpressionParser.cpp a/taskjuggler/ExpressionParser.cpp
+--- b/taskjuggler/ExpressionParser.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/ExpressionParser.cpp	2007-06-01 13:19:08.000000000 +0200
+@@ -46,6 +46,7 @@ ExpressionParser::parse(const QString& t
+     Operation* op = parseLogicalExpression(0, proj);
+     if (!tokenizer->close())
+     {
++        delete op;
+         delete tokenizer;
+         tokenizer = 0;
+         return 0;
+@@ -135,6 +136,7 @@ ExpressionParser::parseLogicalExpression
+         if ((tt = tokenizer->nextToken(token)) != RBRACKET)
+         {
+             errorMessage(i18n("')' expected"));
++            delete op;
+             return 0;
+         }
+     }
+diff -urp b/taskjuggler/HTMLResourceReport.h a/taskjuggler/HTMLResourceReport.h
+--- b/taskjuggler/HTMLResourceReport.h	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/HTMLResourceReport.h	2007-06-01 14:37:17.000000000 +0200
+@@ -14,9 +14,9 @@
+ #define _HTMLResourceReport_h_
+ 
+ #include "HTMLReport.h"
++#include "HTMLResourceReportElement.h"
+ 
+ class Project;
+-class HTMLResourceReportElement;
+ 
+ /**
+  * @short Stores all information about an HTML resource report.
+@@ -26,7 +26,7 @@ class HTMLResourceReport : public HTMLRe
+ {
+ public:
+     HTMLResourceReport(Project* p, const QString& f, const QString& df, int dl);
+-    virtual ~HTMLResourceReport() { }
++    virtual ~HTMLResourceReport() { delete tab; }
+ 
+     virtual const char* getType() const { return "HTMLResourceReport"; }
+ 
+diff -urp b/taskjuggler/ICalReport.cpp a/taskjuggler/ICalReport.cpp
+--- b/taskjuggler/ICalReport.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/ICalReport.cpp	2007-06-01 14:28:51.000000000 +0200
+@@ -212,6 +212,7 @@ ICalReport::generate()
+     // Dump the calendar in ICal format into a text file.
+     KCal::ICalFormat *format = new KCal::ICalFormat();
+     s << format->toString(&cal) << endl;
++    delete format;
+     f.close();
+ 
+     return TRUE;
+diff -urp b/taskjuggler/Project.cpp a/taskjuggler/Project.cpp
+--- b/taskjuggler/Project.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/Project.cpp	2007-06-01 14:25:25.000000000 +0200
+@@ -168,6 +168,8 @@ Project::~Project()
+             }
+     }
+ 
++    delete resourceLimits;
++
+     // Remove support for 1.0 XML reports for next major release. */
+     delete xmlreport;
+ 
+diff -urp b/taskjuggler/ProjectFile.cpp a/taskjuggler/ProjectFile.cpp
+--- b/taskjuggler/ProjectFile.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/ProjectFile.cpp	2007-06-01 15:04:31.000000000 +0200
+@@ -133,6 +133,7 @@ ProjectFile::open(const QString& file, c
+     if (!fi->open())
+     {
+         errorMessage(i18n("Cannot read file '%1'").arg(absFileName));
++        delete fi;
+         return FALSE;
+     }
+ 
+@@ -869,6 +870,7 @@ ProjectFile::readExtend()
+             errorMessage(i18n("The custom attribute '%1' has already been "
+                          "declared for the property '%2'.")
+                 .arg(attrID).arg(property));
++            delete ca;
+             return FALSE;
+         }
+ 
+@@ -2247,8 +2249,10 @@ ProjectFile::readResourceBody(Resource* 
+         else if (token == KW("vacation"))
+         {
+             Interval* iv = new Interval;
+-            if (!readInterval(*iv, false))
++            if (!readInterval(*iv, false)) {
++                delete iv;
+                 return FALSE;
++            }
+             r->addVacation(iv);
+         }
+         else if (token == KW("workinghours"))
+@@ -3183,6 +3187,7 @@ ProjectFile::readWorkingHours(int& daysO
+             if (iv->overlaps(**ili))
+             {
+                 errorMessage(i18n("Working hour intervals may not overlap"));
++                delete iv;
+                 return FALSE;
+             }
+         l->append(iv);
+@@ -3249,8 +3254,10 @@ ProjectFile::readICalTaskReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setHideTask(et);
+@@ -3260,8 +3267,10 @@ ProjectFile::readICalTaskReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setRollUpTask(et);
+@@ -3271,8 +3280,10 @@ ProjectFile::readICalTaskReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setHideResource(et);
+@@ -3282,8 +3293,10 @@ ProjectFile::readICalTaskReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setRollUpResource(et);
+@@ -3295,6 +3308,7 @@ ProjectFile::readICalTaskReport()
+                 if ((tt = nextToken(scId)) != ID)
+                 {
+                     errorMessage(i18n("Scenario ID expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 int scIdx;
+@@ -3302,6 +3316,7 @@ ProjectFile::readICalTaskReport()
+                 {
+                     errorMessage(i18n("Unknown scenario %1")
+                                  .arg(scId));
++                    delete report;
+                     return FALSE;
+                 }
+                 if (proj->getScenario(scIdx - 1)->getEnabled())
+@@ -3310,6 +3325,7 @@ ProjectFile::readICalTaskReport()
+             else
+             {
+                 errorMessage(i18n("Illegal attribute '%1'").arg(token));
++                delete report;
+                 return FALSE;
+             }
+         }
+@@ -3356,6 +3372,8 @@ ProjectFile::readXMLReport()
+                 {
+                     errorMessage("Currently only version 1 and 2 are "
+                                  "supported.");
++                    delete rep;
++                    delete report;
+                     return FALSE;
+                 }
+                 version = token.toInt();
+@@ -3365,8 +3383,11 @@ ProjectFile::readXMLReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete rep;
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setHideTask(et);
+@@ -3376,8 +3397,11 @@ ProjectFile::readXMLReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete rep;
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setRollUpTask(et);
+@@ -3387,8 +3411,11 @@ ProjectFile::readXMLReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete rep;
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setHideResource(et);
+@@ -3398,8 +3425,11 @@ ProjectFile::readXMLReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete rep;
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setRollUpResource(et);
+@@ -3413,6 +3443,8 @@ ProjectFile::readXMLReport()
+                     if ((tt = nextToken(scId)) != ID)
+                     {
+                         errorMessage(i18n("Scenario ID expected"));
++                        delete rep;
++                        delete report;
+                         return FALSE;
+                     }
+                     int scIdx;
+@@ -3420,6 +3452,8 @@ ProjectFile::readXMLReport()
+                     {
+                         errorMessage(i18n("Unknown scenario %1")
+                                      .arg(scId));
++                        delete rep;
++                        delete report;
+                         return FALSE;
+                     }
+                     if (proj->getScenario(scIdx - 1)->getEnabled())
+@@ -3438,6 +3472,8 @@ ProjectFile::readXMLReport()
+             else
+             {
+                 errorMessage(i18n("Illegal attribute '%1'").arg(token));
++                delete rep;
++                delete report;
+                 return FALSE;
+             }
+         }
+@@ -3553,6 +3589,7 @@ ProjectFile::readReport(const QString& r
+             else if (tt != ID)
+             {
+                 errorMessage(i18n("Attribute ID or '}' expected"));
++                delete report;
+                 return FALSE;
+             }
+             if (token == KW("columns"))
+@@ -3562,8 +3599,10 @@ ProjectFile::readReport(const QString& r
+                 {
+                     TableColumnInfo* tci;
+                     if ((tci = readColumn(proj->getMaxScenarios(),
+-                                          tab)) == 0)
++                                          tab)) == 0) {
++                        delete report;
+                         return FALSE;
++                    }
+                     tab->addColumn(tci);
+                     if ((tt = nextToken(token)) != COMMA)
+                     {
+@@ -3578,6 +3617,7 @@ ProjectFile::readReport(const QString& r
+                 if ((tt = nextToken(scId)) != ID)
+                 {
+                     errorMessage(i18n("Scenario ID expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 int scIdx;
+@@ -3585,6 +3625,7 @@ ProjectFile::readReport(const QString& r
+                 {
+                     errorMessage(i18n("Unknown scenario '%1'")
+                                  .arg(scId));
++                    delete report;
+                     return FALSE;
+                 }
+                 if (proj->getScenario(scIdx - 1)->getEnabled())
+@@ -3596,22 +3637,28 @@ ProjectFile::readReport(const QString& r
+             else if (token == KW("start"))
+             {
+                 time_t start;
+-                if (!readDate(start, 0))
++                if (!readDate(start, 0)) {
++                    delete report;
+                     return FALSE;
++                }
+                 tab->setStart(start);
+             }
+             else if (token == KW("end"))
+             {
+                 time_t end;
+-                if (!readDate(end, 1))
++                if (!readDate(end, 1)) {
++                    delete report;
+                     return FALSE;
++                }
+                 tab->setEnd(end);
+             }
+             else if (token == KW("period"))
+             {
+                 Interval iv;
+-                if (!readInterval(iv))
++                if (!readInterval(iv)) {
++                    delete report;
+                     return FALSE;
++                }
+                 tab->setPeriod(iv);
+             }
+             else if (token == KW("headline"))
+@@ -3619,6 +3666,7 @@ ProjectFile::readReport(const QString& r
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String exptected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setHeadline(token);
+@@ -3628,6 +3676,7 @@ ProjectFile::readReport(const QString& r
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String exptected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setCaption(token);
+@@ -3641,8 +3690,10 @@ ProjectFile::readReport(const QString& r
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setHideTask(et);
+@@ -3652,24 +3703,30 @@ ProjectFile::readReport(const QString& r
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setRollUpTask(et);
+             }
+             else if (token == KW("sorttasks"))
+             {
+-                if (!readSorting(tab, 0))
++                if (!readSorting(tab, 0)) {
++                    delete report;
+                     return FALSE;
++                }
+             }
+             else if (token == KW("hideresource"))
+             {
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setHideResource(et);
+@@ -3679,24 +3736,30 @@ ProjectFile::readReport(const QString& r
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setRollUpResource(et);
+             }
+             else if (token == KW("sortresources"))
+             {
+-                if (!readSorting(tab, 1))
++                if (!readSorting(tab, 1)) {
++                    delete report;
+                     return FALSE;
++                }
+             }
+             else if (token == KW("hideaccount"))
+             {
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setHideAccount(et);
+@@ -3706,22 +3769,27 @@ ProjectFile::readReport(const QString& r
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setRollUpAccount(et);
+             }
+             else if (token == KW("sortaccounts"))
+             {
+-                if (!readSorting(tab, 2))
++                if (!readSorting(tab, 2)) {
++                    delete report;
+                     return FALSE;
++                }
+             }
+             else if (token == KW("loadunit"))
+             {
+                 if (nextToken(token) != ID || !tab->setLoadUnit(token))
+                 {
+                     errorMessage(i18n("Illegal load unit"));
++                    delete report;
+                     return FALSE;
+                 }
+             }
+@@ -3730,6 +3798,7 @@ ProjectFile::readReport(const QString& r
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("Time format string expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setTimeFormat(token);
+@@ -3739,6 +3808,7 @@ ProjectFile::readReport(const QString& r
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("Time format string expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setShortTimeFormat(token);
+@@ -3751,6 +3821,7 @@ ProjectFile::readReport(const QString& r
+                     if (!proj->getTask(token))
+                     {
+                         errorMessage(i18n("taskroot must be a known task"));
++                        delete report;
+                         return FALSE;
+                     }
+                     tab->setTaskRoot(token + ".");
+@@ -3758,12 +3829,14 @@ ProjectFile::readReport(const QString& r
+                 else
+                 {
+                     errorMessage(i18n("Task ID expected"));
++                    delete report;
+                     return FALSE;
+                 }
+             }
+             else
+             {
+                 errorMessage(i18n("Illegal attribute"));
++                delete report;
+                 return FALSE;
+             }
+         }
+@@ -3771,8 +3844,10 @@ ProjectFile::readReport(const QString& r
+     else
+         returnToken(tt, token);
+ 
+-    if (!checkReportInterval(tab))
++    if (!checkReportInterval(tab)) {
++        delete report;
+         return FALSE;
++    }
+ 
+     proj->addReport(report);
+ 
+@@ -3895,7 +3970,7 @@ ProjectFile::readHTMLReport(const QStrin
+             {
+                 Interval iv;
+                 if (!readInterval(iv))
+-                    return FALSE;
++                    goto exit_error;
+                 tab->setPeriod(iv);
+             }
+             else if (token == KW("headline"))
+@@ -4097,14 +4172,14 @@ ProjectFile::readHTMLReport(const QStrin
+                     if (!proj->getTask(token))
+                     {
+                         errorMessage(i18n("taskroot must be a known task"));
+-                        return FALSE;
++                        goto exit_error;
+                     }
+                     tab->setTaskRoot(token + ".");
+                 }
+                 else
+                 {
+                     errorMessage(i18n("Task ID expected"));
+-                    return FALSE;
++                    goto exit_error;
+                 }
+             }
+             else if (reportType == "htmlweeklycalendar" &&
+@@ -4168,6 +4243,7 @@ ProjectFile::readHTMLStatusReport()
+             else if (tt != ID)
+             {
+                 errorMessage(i18n("Attribute ID or '}' expected"));
++                delete report;
+                 return FALSE;
+             }
+             if (token == KW("table"))
+@@ -4176,17 +4252,21 @@ ProjectFile::readHTMLStatusReport()
+                     token.toInt() > 4)
+                 {
+                     errorMessage(i18n("Number between 1 and 4 expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 HTMLReportElement* tab = report->getTable(token.toInt() - 1);
+-                if (!readReportElement(tab))
++                if (!readReportElement(tab)) {
++                    delete report;
+                     return FALSE;
++                }
+             }
+             else if (token == KW("headline"))
+             {
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String exptected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 report->setHeadline(token);
+@@ -4196,6 +4276,7 @@ ProjectFile::readHTMLStatusReport()
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String exptected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 report->setCaption(token);
+@@ -4205,6 +4286,7 @@ ProjectFile::readHTMLStatusReport()
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 report->setRawHead(token);
+@@ -4214,6 +4296,7 @@ ProjectFile::readHTMLStatusReport()
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 report->setRawTail(token);
+@@ -4223,6 +4306,7 @@ ProjectFile::readHTMLStatusReport()
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 report->setRawStyleSheet(token);
+@@ -4230,6 +4314,7 @@ ProjectFile::readHTMLStatusReport()
+             else
+             {
+                 errorMessage(i18n("Illegal attribute"));
++                delete report;
+                 return FALSE;
+             }
+         }
+@@ -4285,6 +4370,7 @@ ProjectFile::readCSVReport(const QString
+             else if (tt != ID)
+             {
+                 errorMessage(i18n("Attribute ID or '}' expected"));
++                delete report;
+                 return FALSE;
+             }
+             if (token == KW("columns"))
+@@ -4293,8 +4379,10 @@ ProjectFile::readCSVReport(const QString
+                 for ( ; ; )
+                 {
+                     TableColumnInfo* tci;
+-                    if ((tci = readColumn(proj->getMaxScenarios(), tab)) == 0)
++                    if ((tci = readColumn(proj->getMaxScenarios(), tab)) == 0) {
++                        delete report;
+                         return FALSE;
++                    }
+                     tab->addColumn(tci);
+                     if ((tt = nextToken(token)) != COMMA)
+                     {
+@@ -4310,12 +4398,14 @@ ProjectFile::readCSVReport(const QString
+                 if ((tt = nextToken(scId)) != ID)
+                 {
+                     errorMessage(i18n("Scenario ID expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 if (proj->getScenarioIndex(scId) == -1)
+                 {
+                     errorMessage(i18n("Unknown scenario '%1'")
+                                  .arg(scId));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->addScenario(proj->getScenarioIndex(scId) - 1);
+@@ -4323,22 +4413,28 @@ ProjectFile::readCSVReport(const QString
+             else if (token == KW("start"))
+             {
+                 time_t start;
+-                if (!readDate(start, 0))
++                if (!readDate(start, 0)) {
++                    delete report;
+                     return FALSE;
++                }
+                 tab->setStart(start);
+             }
+             else if (token == KW("end"))
+             {
+                 time_t end;
+-                if (!readDate(end, 1))
++                if (!readDate(end, 1)) {
++                    delete report;
+                     return FALSE;
++                }
+                 tab->setEnd(end);
+             }
+             else if (token == KW("period"))
+             {
+                 Interval iv;
+-                if (!readInterval(iv))
++                if (!readInterval(iv)) {
++                    delete report;
+                     return FALSE;
++                }
+                 tab->setPeriod(iv);
+             }
+             else if (token == KW("rawhead"))
+@@ -4346,6 +4442,7 @@ ProjectFile::readCSVReport(const QString
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setRawHead(token);
+@@ -4355,6 +4452,7 @@ ProjectFile::readCSVReport(const QString
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setRawTail(token);
+@@ -4372,8 +4470,10 @@ ProjectFile::readCSVReport(const QString
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setHideTask(et);
+@@ -4383,24 +4483,30 @@ ProjectFile::readCSVReport(const QString
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setRollUpTask(et);
+             }
+             else if (token == KW("sorttasks"))
+             {
+-                if (!readSorting(tab, 0))
++                if (!readSorting(tab, 0)) {
++                    delete report;
+                     return FALSE;
++                }
+             }
+             else if (token == KW("hideresource"))
+             {
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setHideResource(et);
+@@ -4410,24 +4516,30 @@ ProjectFile::readCSVReport(const QString
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setRollUpResource(et);
+             }
+             else if (token == KW("sortresources"))
+             {
+-                if (!readSorting(tab, 1))
++                if (!readSorting(tab, 1)) {
++                    delete report;
+                     return FALSE;
++                }
+             }
+             else if (token == KW("hideaccount"))
+             {
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setHideAccount(et);
+@@ -4437,22 +4549,27 @@ ProjectFile::readCSVReport(const QString
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 tab->setRollUpAccount(et);
+             }
+             else if (token == KW("sortaccounts"))
+             {
+-                if (!readSorting(tab, 2))
++                if (!readSorting(tab, 2)) {
++                    delete report;
+                     return FALSE;
++                }
+             }
+             else if (token == KW("loadunit"))
+             {
+                 if (nextToken(token) != ID || !tab->setLoadUnit(token))
+                 {
+                     errorMessage(i18n("Illegal load unit"));
++                    delete report;
+                     return FALSE;
+                 }
+             }
+@@ -4461,6 +4578,7 @@ ProjectFile::readCSVReport(const QString
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("Time format string expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setTimeFormat(token);
+@@ -4470,6 +4588,7 @@ ProjectFile::readCSVReport(const QString
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("Time format string expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setShortTimeFormat(token);
+@@ -4479,6 +4598,7 @@ ProjectFile::readCSVReport(const QString
+                 if (nextToken(token) != ID)
+                 {
+                     errorMessage(i18n("Bar label mode expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 if (token == KW("empty"))
+@@ -4489,6 +4609,7 @@ ProjectFile::readCSVReport(const QString
+                 {
+                     errorMessage(i18n("Unknown bar label mode '%1'")
+                                  .arg(token));
++                    delete report;
+                     return FALSE;
+                 }
+             }
+@@ -4501,6 +4622,7 @@ ProjectFile::readCSVReport(const QString
+                 if (nextToken(token) != STRING)
+                 {
+                     errorMessage(i18n("String expected"));
++                    delete report;
+                     return FALSE;
+                 }
+                 tab->setFieldSeparator(token);
+@@ -4508,6 +4630,7 @@ ProjectFile::readCSVReport(const QString
+             else
+             {
+                 errorMessage(i18n("Illegal attribute"));
++                delete report;
+                 return FALSE;
+             }
+         }
+@@ -4515,8 +4638,10 @@ ProjectFile::readCSVReport(const QString
+     else
+         returnToken(tt, token);
+ 
+-    if (!checkReportInterval(tab))
++    if (!checkReportInterval(tab)) {
++        delete report;
+         return FALSE;
++    }
+ 
+     proj->addReport(report);
+ 
+@@ -4567,6 +4692,7 @@ ProjectFile::readExportReport()
+             else if (tt != ID)
+             {
+                 errorMessage(i18n("Attribute ID or '}' expected"));
++                delete report;
+                 return FALSE;
+             }
+ 
+@@ -4575,8 +4701,10 @@ ProjectFile::readExportReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setHideTask(et);
+@@ -4586,8 +4714,10 @@ ProjectFile::readExportReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setRollUpTask(et);
+@@ -4597,8 +4727,10 @@ ProjectFile::readExportReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setHideResource(et);
+@@ -4608,8 +4740,10 @@ ProjectFile::readExportReport()
+                 Operation* op;
+                 QString fileName = openFiles.last()->getFile();
+                 int lineNo = openFiles.last()->getLine();
+-                if ((op = readLogicalExpression()) == 0)
++                if ((op = readLogicalExpression()) == 0) {
++                    delete report;
+                     return FALSE;
++                }
+                 ExpressionTree* et = new ExpressionTree(op);
+                 et->setDefLocation(fileName, lineNo);
+                 report->setRollUpResource(et);
+@@ -4622,6 +4756,7 @@ ProjectFile::readExportReport()
+                     if (!proj->getTask(token))
+                     {
+                         errorMessage(i18n("taskroot must be a known task"));
++                        delete report;
+                         return FALSE;
+                     }
+                     report->setTaskRoot(token + ".");
+@@ -4629,6 +4764,7 @@ ProjectFile::readExportReport()
+                 else
+                 {
+                     errorMessage(i18n("Task ID expected"));
++                    delete report;
+                     return FALSE;
+                 }
+             }
+@@ -4641,6 +4777,7 @@ ProjectFile::readExportReport()
+                         !report->addTaskAttribute(ta))
+                     {
+                         errorMessage(i18n("task attribute expected"));
++                        delete report;
+                         return FALSE;
+                     }
+ 
+@@ -4660,6 +4797,7 @@ ProjectFile::readExportReport()
+                     if ((tt = nextToken(scId)) != ID)
+                     {
+                         errorMessage(i18n("Scenario ID expected"));
++                        delete report;
+                         return FALSE;
+                     }
+                     int scIdx;
+@@ -4667,6 +4805,7 @@ ProjectFile::readExportReport()
+                     {
+                         errorMessage(i18n("Unknown scenario %1")
+                                      .arg(scId));
++                        delete report;
+                         return FALSE;
+                     }
+                     if (proj->getScenario(scIdx - 1)->getEnabled())
+@@ -4681,22 +4820,28 @@ ProjectFile::readExportReport()
+             else if (token == KW("start"))
+             {
+                 time_t start;
+-                if (!readDate(start, 0))
++                if (!readDate(start, 0)) {
++                    delete report;
+                     return FALSE;
++                }
+                 report->setStart(start);
+             }
+             else if (token == KW("end"))
+             {
+                 time_t end;
+-                if (!readDate(end, 1))
++                if (!readDate(end, 1)) {
++                    delete report;
+                     return FALSE;
++                }
+                 report->setEnd(end);
+             }
+             else if (token == KW("period"))
+             {
+                 Interval iv;;
+-                if (!readInterval(iv))
++                if (!readInterval(iv)) {
++                    delete report;
+                     return false;
++                }
+                 report->setPeriod(iv);
+             }
+             else if (token == KW("properties"))
+@@ -4707,6 +4852,7 @@ ProjectFile::readExportReport()
+                     if ((tt = nextToken(token)) != ID)
+                     {
+                         errorMessage(i18n("Property name expected"));
++                        delete report;
+                         return FALSE;
+                     }
+                     if (token == KW("all"))
+@@ -4727,6 +4873,7 @@ ProjectFile::readExportReport()
+                     else
+                     {
+                         errorMessage(i18n("Unknown property %1").arg(token));
++                        delete report;
+                         return FALSE;
+                     }
+                     if ((tt = nextToken(token)) != COMMA)
+@@ -4743,6 +4890,7 @@ ProjectFile::readExportReport()
+             else
+             {
+                 errorMessage(i18n("Illegal attribute"));
++                delete report;
+                 return FALSE;
+             }
+         }
+@@ -5083,6 +5231,7 @@ ProjectFile::readLogicalExpression(int p
+         if ((tt = nextToken(token)) != RBRACKET)
+         {
+             errorMessage(i18n("')' expected"));
++            delete op;
+             return 0;
+         }
+     }
+diff -urp b/taskjuggler/SbBooking.h a/taskjuggler/SbBooking.h
+--- b/taskjuggler/SbBooking.h	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/SbBooking.h	2007-06-01 14:35:19.000000000 +0200
+@@ -26,7 +26,7 @@ public:
+     SbBooking(Task* t)
+         : task(t) { }
+     SbBooking(const SbBooking* b) { task = b->task; }
+-    ~SbBooking() { }
++    virtual ~SbBooking() { }
+ 
+     Task* getTask() const { return task; }
+ 
+diff -urp b/taskjuggler/TableColumnInfo.cpp a/taskjuggler/TableColumnInfo.cpp
+--- b/taskjuggler/TableColumnInfo.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/TableColumnInfo.cpp	2007-06-01 14:25:25.000000000 +0200
+@@ -11,11 +11,14 @@
+  */
+ 
+ #include "TableColumnInfo.h"
++#include "ExpressionTree.h"
+ 
+ TableColumnInfo::~TableColumnInfo()
+ {
+     delete [] sum;
+     delete [] memory;
++    delete hideCellText;
++    delete hideCellURL;
+ }
+ 
+ void
+diff -urp b/taskjuggler/Task.cpp a/taskjuggler/Task.cpp
+--- b/taskjuggler/Task.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/Task.cpp	2007-06-01 14:48:17.000000000 +0200
+@@ -1333,6 +1333,7 @@ Task::xRef(QDict<Task>& hash, int& error
+         if ((t = hash.find(absId)) == 0)
+         {
+             errorMessage(i18n("Unknown dependency '%1'").arg(absId));
++            brokenDeps.append(*tdi);
+             errors++;
+         }
+         else
+diff -urp b/taskjuggler/Tokenizer.cpp a/taskjuggler/Tokenizer.cpp
+--- b/taskjuggler/Tokenizer.cpp	2007-01-29 09:20:32.000000000 +0100
++++ a/taskjuggler/Tokenizer.cpp	2007-06-01 13:19:08.000000000 +0200
+@@ -525,6 +525,7 @@ Tokenizer::readMacroCall()
+     if (tt != RBRACE)
+     {
+         errorMessage(i18n("'}' expected"));
++        delete sl;
+         return FALSE;
+     }
+ 
+@@ -532,8 +533,10 @@ Tokenizer::readMacroCall()
+     mt->setLocation(file, currLine);
+     QString macro = mt->resolve(sl);
+ 
+-    if (macro.isNull() && prefix.isEmpty())
++    if (macro.isNull() && prefix.isEmpty()) {
++        delete sl;
+         return FALSE;
++    }
+ 
+     lineBuf = lineBufCopy;
+ 
+@@ -545,6 +548,8 @@ Tokenizer::readMacroCall()
+     // push expanded macro reverse into ungetC buffer.
+     for (int i = macro.length() - 1; i >= 0; --i)
+         ungetBuf.append(macro[i].latin1());
++
++    delete sl;
+     return TRUE;
+ }
+ 
diff --git a/taskjuggler.spec b/taskjuggler.spec
index 9659589..ed2834b 100644
--- a/taskjuggler.spec
+++ b/taskjuggler.spec
@@ -1,6 +1,6 @@
 Name:          taskjuggler
 Version:       2.3.1
-Release:       2%{?dist}
+Release:       3%{?dist}
 Summary:       Project management tool
 
 Group:         Applications/Productivity
@@ -10,9 +10,12 @@ Source0:       http://www.taskjuggler.org/download/%{name}-%{version}.tar.bz2
 BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires: kdepim-devel
+# need gettext for untranslated .po files
+Buildrequires: gettext
 Requires(post): desktop-file-utils
 Requires(postun): desktop-file-utils
 Patch1:        taskjuggler-2.1.1-docbook.patch
+Patch2:        taskjuggler-2.3.1-memoryleakspackage.patch
 
 %description
 TaskJuggler is a modern and powerful project management tool. Its new approach 
@@ -27,13 +30,15 @@ communication management.
 
 %prep
 %setup -q
-%patch1 -p1 -b .orig
+%patch1 -p1 -b .1-orig
+%patch2 -p1 -b .2-memoryleakspackage
 
 
 %build
 [ -n "$QTDIR" ] || . %{_sysconfdir}/profile.d/qt.sh
 %configure --with-qt-includes=%{_libdir}/qt-3.3/include --with-qt-libraries=%{_libdir}/qt-3.3/lib --with-kde-support=yes --disable-rpath
-make %{?_smp_mflags}
+# doc build fails with -j4 
+make
 
 
 %install
@@ -96,8 +101,13 @@ fi
 
 
 %changelog
-* Thu Jun  7 2007 Jens Petersen <petersen at redhat.com> - 2.3.1-2
+* Fri Jun  8 2007 Jens Petersen <petersen at redhat.com> - 2.3.1-3
 - setup QTDIR and use find_lang macro to fix build
+- buildrequire gettext for untranslated .po file
+
+* Thu Jun  7 2007 Ondrej Vasik  <ovasik at redhat.com> -2.3.1-2
+- fixed number of memory leaks (from upstream)
+- removed _smp_mflags to avoid build failures with 4+ cpus (#233028)
 
 * Thu Mar  8 2007 Jens Petersen <petersen at redhat.com> - 2.3.1-1
 - update to 2.3.1
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/taskjuggler.git/commit/?h=epel7&id=ae602dca9a521b2724c2a19e5c5bb835009540d9


More information about the scm-commits mailing list