Review Request 111796: Fix endless recursion in setSpecializedFrom

Andreas Pakulat apaku at gmx.de
Wed Jul 31 11:16:46 UTC 2013


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/111796/
-----------------------------------------------------------

(Updated July 31, 2013, 11:16 a.m.)


Review request for KDevelop.


Changes
-------

Used the ThreadLocalData along with PushValue as done in other places in the same file. Also increased the depth and provide a meaningful error message.

Still no test unfortunately.


Summary (updated)
-----------------

Fix endless recursion in setSpecializedFrom


Description (updated)
-------

Fix endless recursion in setSpecializedFrom

This could be triggered by having the exactly same specialization occur
twice in a single file. setSpecializedFrom would end up calling itself
with the same TemplateDeclaration over and over again.

Adding another recursion counter in the same way that other places already
have one fixes the problem. Unfortunately I wasn't able to generate a test
that exhibits the recursion problem.

BUG: 318492

Avoid endless recursions in TemplateDeclaration::setSpecializedFrom

Having two template specializations with the same signature causes an
endless recursion here. I don't see a reason why a TemplateDeclaration
should update its 'specializedFrom' stuff if that already is up-to-date.
So in the case the other->specializedFrom.data() is already what this
declaration has, there's simply nothing to do.


This addresses bug 318492.
    http://bugs.kde.org/show_bug.cgi?id=318492


Diffs (updated)
-----

  languages/cpp/cppduchain/templatedeclaration.cpp b35ba13a0eacb5157a921cf96fdc22c091f625e1 

Diff: http://git.reviewboard.kde.org/r/111796/diff/


Testing
-------


Thanks,

Andreas Pakulat

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20130731/2efabea6/attachment.html>


More information about the KDevelop-devel mailing list