News:

Accounts with zero posts and zero activity during the last months will be deleted periodically to fight SPAM!

Main Menu

Fix global namespace bug

Started by Loaden, May 01, 2010, 01:27:20 PM

Previous topic - Next topic

Loaden

test demo:
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]

ollydbg

@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.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

ollydbg

Ok, I have add a related post Re: CC toolbar enhancement.

The explanation we change the code in token.cpp from


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

to

        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.
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.