Developer forums (C::B DEVELOPMENT STRICTLY!) > CodeCompletion redesign

CC upper limits ? BUT for sure BUGs

<< < (5/8) > >>

killerbot:
will try to test this evening,  wrt previous path, just one change , right, log before the continue.

ollydbg:

--- Quote from: killerbot on January 28, 2014, 01:33:01 pm ---wrt previous path, just one change , right, log before the continue.

--- End quote ---
yes.

killerbot:

--- Code: ---NativeParser::CreateParser(): Finish creating a new parser for project 'Dummy'
NativeParser::OnParserEnd(): Project 'Dummy' parsing stage done!
NativeParser::AddProjectToParser(): Add project (NamingService) to parser
NativeParser::OnParsingOneByOneTimer(): all files in this project were already parsed, try next project.
NativeParser::AddProjectToParser(): Add project (Dummy2) to parser
NativeParser::OnParserEnd(): Project 'Dummy2' parsing stage done!

--- End code ---

ollydbg:

--- Quote from: killerbot on January 28, 2014, 10:58:24 pm ---
--- Code: ---NativeParser::CreateParser(): Finish creating a new parser for project 'Dummy'
NativeParser::OnParserEnd(): Project 'Dummy' parsing stage done!
NativeParser::AddProjectToParser(): Add project (NamingService) to parser
NativeParser::OnParsingOneByOneTimer(): all files in this project were already parsed, try next project.
NativeParser::AddProjectToParser(): Add project (Dummy2) to parser
NativeParser::OnParserEnd(): Project 'Dummy2' parsing stage done!

--- End code ---

--- End quote ---
Thanks, now, I need to understand why in Windows, there is two message:

--- Code: ---NativeParser::OnParsingOneByOneTimer(): all files in this project were already parsed, try next project.
--- End code ---
But it only has one on Linux.

I debugged the code a little, found that my patch was not quite logically OK. By testing your sample workspace, I noticed that the second cbp add no source files, but I see it did add some macro definitions (from the GCC -E ... command), so adding the third project in that loop(see my patch) is not a good idea, because it will cause the third cbp added, and removed again, then added again....

ollydbg:

--- Code: ---    if (   !m_PriorityHeaders.empty()
        || !m_BatchParseFiles.empty()
        || !m_PredefinedMacros.IsEmpty() )
    {
        CC_LOCKER_TRACK_P_MTX_LOCK(ParserCommon::s_ParserMutex)

        ParserThreadedTask* thread = new ParserThreadedTask(this, ParserCommon::s_ParserMutex);
        TRACE(_T("Parser::OnBatchTimer(): Adding a ParserThreadedTask thread to m_Pool."));
        m_Pool.AddTask(thread, true); //once this function is called, the thread will be executed from the pool.

--- End code ---
If m_PredefinedMacros is not empty, there is still one ParserThreadedTask put in the m_Pool,  that's the reason the bug doesn't happened under Windows(without my patch). So, there comes a guess, if under Linux, C::B svn code (without my patch), I guess that the cbp is not a standard project(such as a makefile project) Or in some wired reason ???, then m_PredefinedMacros is empty, so no thread task will be put in the pool, so the bug happens because the m_Pool have not tasks to run.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version