Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Tobias Hunger
qt-creator
Commits
2c24bee0
Commit
2c24bee0
authored
Sep 02, 2010
by
Tobias Hunger
Browse files
Delete parsers after parsing is done.
This way we have a chance to flush out any state the parsers might have.
parent
081e31fc
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/plugins/projectexplorer/abstractprocessstep.cpp
View file @
2c24bee0
...
...
@@ -204,6 +204,12 @@ void AbstractProcessStep::processStarted()
void
AbstractProcessStep
::
processFinished
(
int
exitCode
,
QProcess
::
ExitStatus
status
)
{
// Clean up output parsers
if
(
m_outputParserChain
)
{
delete
m_outputParserChain
;
m_outputParserChain
=
0
;
}
if
(
status
==
QProcess
::
NormalExit
&&
exitCode
==
0
)
{
emit
addOutput
(
tr
(
"The process
\"
%1
\"
exited normally."
)
.
arg
(
QDir
::
toNativeSeparators
(
m_command
)),
...
...
src/plugins/projectexplorer/ioutputparser.cpp
View file @
2c24bee0
...
...
@@ -60,9 +60,9 @@ IOutputParser *IOutputParser::takeOutputParserChain()
{
IOutputParser
*
parser
=
m_parser
;
disconnect
(
parser
,
SIGNAL
(
addOutput
(
QString
,
ProjectExplorer
::
BuildStep
::
OutputFormat
)),
this
,
SLOT
(
outputAdded
(
QString
,
ProjectExplorer
::
BuildStep
::
OutputFormat
)));
this
,
SLOT
(
outputAdded
(
QString
,
ProjectExplorer
::
BuildStep
::
OutputFormat
)));
disconnect
(
parser
,
SIGNAL
(
addTask
(
ProjectExplorer
::
Task
)),
this
,
SLOT
(
taskAdded
(
ProjectExplorer
::
Task
)));
this
,
SLOT
(
taskAdded
(
ProjectExplorer
::
Task
)));
m_parser
=
0
;
return
parser
;
}
...
...
@@ -72,6 +72,13 @@ IOutputParser *IOutputParser::childParser() const
return
m_parser
;
}
void
IOutputParser
::
setChildParser
(
IOutputParser
*
parser
)
{
if
(
m_parser
!=
parser
)
delete
m_parser
;
m_parser
=
parser
;
}
void
IOutputParser
::
stdOutput
(
const
QString
&
line
)
{
if
(
m_parser
)
...
...
src/plugins/projectexplorer/ioutputparser.h
View file @
2c24bee0
...
...
@@ -57,6 +57,7 @@ public:
/// Return the head of this parsers output parser children
/// IOutputParser keeps ownership!
IOutputParser
*
childParser
()
const
;
void
setChildParser
(
IOutputParser
*
parser
);
/// Called once for each line if standard output to parse.
virtual
void
stdOutput
(
const
QString
&
line
);
...
...
src/plugins/projectexplorer/outputparser_test.cpp
View file @
2c24bee0
...
...
@@ -64,6 +64,19 @@ void OutputParserTester::testParsing(const QString &lines,
else
childParser
()
->
stdError
(
input
);
}
// first disconnect ourselves from the end of the parser chain again
IOutputParser
*
parser
=
this
;
while
(
parser
=
parser
->
childParser
())
{
if
(
parser
->
childParser
()
==
this
)
{
childParser
()
->
takeOutputParserChain
();
break
;
}
}
parser
=
0
;
emit
aboutToDeleteParser
();
// then delete the parser(s) to test
setChildParser
(
0
);
QCOMPARE
(
m_receivedOutput
,
outputLines
);
QCOMPARE
(
m_receivedStdErrChildLine
,
childStdErrLines
);
...
...
src/plugins/projectexplorer/outputparser_test.h
View file @
2c24bee0
...
...
@@ -70,6 +70,9 @@ public:
void
appendOutputParser
(
IOutputParser
*
parser
);
signals:
void
aboutToDeleteParser
();
private
slots
:
void
outputAdded
(
const
QString
&
line
,
const
QTextCharFormat
&
textCharFormat
);
void
taskAdded
(
const
ProjectExplorer
::
Task
&
task
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment