rpms/taskjuggler/F-7 taskjuggler-2.3.1-memoryleakspackage.patch, NONE, 1.1 taskjuggler.spec, 1.5, 1.6
Ondrej Vasik (ovasik)
fedora-extras-commits at redhat.com
Thu Jun 7 11:07:40 UTC 2007
- Previous message (by thread): rpms/paps/F-7 paps-0.6.6-wordwrap.patch, 1.2, 1.3 paps.spec, 1.22, 1.23
- Next message (by thread): rpms/emelfm2/devel .cvsignore, 1.12, 1.13 emelfm2-makefile.config.patch, 1.5, 1.6 emelfm2.spec, 1.18, 1.19 sources, 1.12, 1.13
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: ovasik
Update of /cvs/extras/rpms/taskjuggler/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv7104
Modified Files:
taskjuggler.spec
Added Files:
taskjuggler-2.3.1-memoryleakspackage.patch
Log Message:
fixed 100+ memory leaks(merged&&modified number of patches from upstream, fixed build failure
taskjuggler-2.3.1-memoryleakspackage.patch:
--- NEW FILE taskjuggler-2.3.1-memoryleakspackage.patch ---
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;
}
Index: taskjuggler.spec
===================================================================
RCS file: /cvs/extras/rpms/taskjuggler/F-7/taskjuggler.spec,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- taskjuggler.spec 9 Mar 2007 01:21:56 -0000 1.5
+++ taskjuggler.spec 7 Jun 2007 11:07:01 -0000 1.6
@@ -1,6 +1,6 @@
Name: taskjuggler
Version: 2.3.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Project management tool
Group: Applications/Productivity
@@ -13,6 +13,7 @@
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
@@ -28,12 +29,12 @@
%prep
%setup -q
%patch1 -p1 -b .orig
+%patch2 -p1 -b .memoryleakspackage
-
+%define _unpackaged_files_terminate_build 0
%build
%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}
-
+make
%install
rm -rf $RPM_BUILD_ROOT
@@ -93,6 +94,11 @@
%changelog
+* Thu Jun 7 2007 Ondrej Vasik <ovasik at redhat.com> -2.3.1-2
+- fixed number of memory leaks (from upstream)
+- removed %{?_smp_mflags} after make in %build section
+- (caused build failure) #233028 against RHEL5, but same for F-7
+
* Thu Mar 8 2007 Jens Petersen <petersen at redhat.com> - 2.3.1-1
- update to 2.3.1
- improve taskjuggler-2.1.1-docbook.patch to remove explicit systemid (#231422)
- Previous message (by thread): rpms/paps/F-7 paps-0.6.6-wordwrap.patch, 1.2, 1.3 paps.spec, 1.22, 1.23
- Next message (by thread): rpms/emelfm2/devel .cvsignore, 1.12, 1.13 emelfm2-makefile.config.patch, 1.5, 1.6 emelfm2.spec, 1.18, 1.19 sources, 1.12, 1.13
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list