Skip to content
  • Nikolai Kosjar's avatar
    C++: Fix crash for invalid code · f51d7a23
    Nikolai Kosjar authored
    
    
    ...due to indirect recursion:
    
      ...
      CPlusPlus::ClassOrNamespace::lookupType        LookupContext.cpp 833  0x7fffd6c954cc
      CPlusPlus::ClassOrNamespace::nestedType        LookupContext.cpp 1364 0x7fffd6c94bc6
      CPlusPlus::ClassOrNamespace::lookupType_helper LookupContext.cpp 955  0x7fffd6c9517f
      CPlusPlus::ClassOrNamespace::lookupType_helper LookupContext.cpp 983  0x7fffd6c952ad
      CPlusPlus::ClassOrNamespace::lookupType        LookupContext.cpp 833  0x7fffd6c954cc
      CPlusPlus::ClassOrNamespace::nestedType        LookupContext.cpp 1364 0x7fffd6c94bc6
      CPlusPlus::ClassOrNamespace::lookupType_helper LookupContext.cpp 955  0x7fffd6c9517f
      CPlusPlus::ClassOrNamespace::lookupType_helper LookupContext.cpp 983  0x7fffd6c952ad
      CPlusPlus::ClassOrNamespace::lookupType        LookupContext.cpp 833  0x7fffd6c954cc
      ...
    
    ClassOrNamespace::lookupType(const Name *) already guards with a list of
    entries already processed, but some calls deeper the list is not passed
    on and lookupType() starts again with an empty list. Handle that case,
    too.
    
    Task-number: QTCREATORBUG-18499
    Change-Id: Iab8978f6ac1d0aea16f49b3547415f43de887b07
    Reviewed-by: default avatarMarco Bubke <marco.bubke@qt.io>
    f51d7a23