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