Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => CodeCompletion redesign => Topic started by: Loaden on May 01, 2010, 01:27:20 pm

Title: Fix global namespace bug
Post by: Loaden on May 01, 2010, 01:27:20 pm
test demo:
Code
typedef struct _CERT_ECC_SIGNATURE {
    CRYPT_UINT_BLOB     r;
    CRYPT_UINT_BLOB     s;
} CERT_ECC_SIGNATURE, *PCERT_ECC_SIGNATURE;

namespace std
{
    class string
    {
    public:
        void test() {}
    };
};

std::string s;


[attachment deleted by admin]
Title: Re: Fix global namespace bug
Post by: ollydbg on May 01, 2010, 05:10:45 pm
@loaden
That's great you have fix this bug.
But can you explain more about the patch? How and what you have done.
So that Morten and other devs can understand the theory quickly and applied it soon in the near feature.
Title: Re: Fix global namespace bug
Post by: ollydbg on May 02, 2010, 06:13:52 am
Ok, I have add a related post Re: CC toolbar enhancement (http://forums.codeblocks.org/index.php/topic,12210.msg82987.html#msg82987).

The explanation we change the code in token.cpp from

Code
        if (   (   (parent < 0)
                || (curToken->m_ParentIndex == parent) )
            && (curToken->m_TokenKind & kindMask) )
        {
            return result;
        }
to
Code
        if ((curToken->m_ParentIndex == parent) && (curToken->m_TokenKind & kindMask))
        {
            return result;
        }

Is that:

When adding a token, for example, we need to check if this token already exist.
So, it check already exists in the parent scope.

But I'm not sure why the first code need to "parent<0", because the global scope is defined as parent = -1.