User forums > Nightly builds
The 01 September 2015 build (10474) is out.
carra:
--- Quote from: ollydbg on September 04, 2015, 09:30:33 am ---Really? But I think CC has never handle this case before, which revision did you see works OK?
--- End quote ---
Wow, you are actually right! :o I have tested it in version 8242, which I used for a long time, and the bug is there too!! My guess is that I wasn't using this pattern in my headers at that time, and that I must have started using it just after switching to some newer version (that's why I believed the new CC to be the culprit).
Xaviou:
Hi to all.
I probably found a small bug in this release.
The "Insert" => "All class methods without implementation" functionality of the editor removes the spaces between the parameters names and their types.
Step to reproduce :
* Create a new wxWidgets project (frame based) : let's name it wxCBTest
* Open the frame's cpp file in the editor, and remove one of the events handlers (for example, remove all the implementation of wxCBTestFrame::OnClose) but don't touch the declaration.
* Press [ Ctrl ] + [ Alt ] + [ S ] to save all the files (or press the "Save all files" toolbar button)
* Right click in an empty line in the editor (witch should always be open on the frame's cpp file)
* Select Insert => All class methods without implementation
* The removed function should be present in the list : select it (and unselect others things if any)The declaration of the function is void OnClose(wxCloseEvent& event); (note the space between wxCloseEvent& and event).
In the cpp file, the inserted method is now void OnClose(wxCloseEvent&event); (the space has been removed).
I've made some test with the previous nightly (r10376) but the bug wasn't present.
I also noticed that an old bug is still present : if in a class you have a method witch returns a pointer or a reference (for example wxString& GetAppPath()), the automatically inserted function with the Insert => All class methods without implementation doesn't have the correct type (the * or & sign is removed and the inserted text will be wxString wxCBTestFrame::GetAppPath()).
Regards
Xav'.
ollydbg:
--- Quote from: Xaviou on September 04, 2015, 04:28:17 pm ---Hi to all.
I probably found a small bug in this release.
The "Insert" => "All class methods without implementation" functionality of the editor removes the spaces between the parameters names and their types.
Step to reproduce :
* Create a new wxWidgets project (frame based) : let's name it wxCBTest
* Open the frame's cpp file in the editor, and remove one of the events handlers (for example, remove all the implementation of wxCBTestFrame::OnClose) but don't touch the declaration.
* Press [ Ctrl ] + [ Alt ] + [ S ] to save all the files (or press the "Save all files" toolbar button)
* Right click in an empty line in the editor (witch should always be open on the frame's cpp file)
* Select Insert => All class methods without implementation
* The removed function should be present in the list : select it (and unselect others things if any)The declaration of the function is void OnClose(wxCloseEvent& event); (note the space between wxCloseEvent& and event).
In the cpp file, the inserted method is now void OnClose(wxCloseEvent&event); (the space has been removed).
I've made some test with the previous nightly (r10376) but the bug wasn't present.
--- End quote ---
Hi, thanks for the report, I can confirm this, it is caused by my CC patch serials to enable the macro expansion. I will look into it.
--- Quote ---I also noticed that an old bug is still present : if in a class you have a method witch returns a pointer or a reference (for example wxString& GetAppPath()), the automatically inserted function with the Insert => All class methods without implementation doesn't have the correct type (the * or & sign is removed and the inserted text will be wxString wxCBTestFrame::GetAppPath()).
Regards
Xav'.
--- End quote ---
It is another bug as I can see, I will look into it also.
ollydbg:
--- Quote from: ollydbg on September 05, 2015, 02:28:01 am ---Hi, thanks for the report, I can confirm this, it is caused by my CC patch serials to enable the macro expansion. I will look into it.
--- End quote ---
The issue is caused by reading the parentheses, I just look at the token, I see that:
--- Code: ---$4 = {m_FullType = L"void", m_BaseType = L"void", m_Name = L"OnAbout", m_Args = L"(wxCommandEvent&event)", m_BaseArgs = L"(wxCommandEvent&)", m_AncestorsString = <g_strEmpty+12> L"", m_FileIdx = 293, m_Line = 31, m_ImplFileIdx = 0, m_ImplLine = 0, m_ImplLineStart = 100, m_ImplLineEnd = 102, m_Scope = tsPrivate, m_TokenKind = tkFunction, m_IsOperator = false, m_IsLocal = true, m_IsTemp = false, m_IsConst = false, m_IsNoExcept = false, m_IsAnonymous = false, m_Index = 68154, m_ParentIndex = 68149, m_Children = std::set with 0 elements, m_Ancestors = std::set with 0 elements, m_DirectAncestors = std::set with 0 elements, m_Descendants = std::set with 0 elements, m_Aliases = wxArray<T>, m_TemplateArgument = <g_strEmpty+12> L"", m_TemplateType = wxArray<T>, m_TemplateMap = std::map with 0 elements, m_TemplateAlias = <g_strEmpty+12> L"", m_UserData = 0x3c54f80, m_TokenTree = 0x1234cc08, m_Ticket = 68489}
--- End code ---
Look at the "m_Args" field.
ollydbg:
@Xaviou
The first issue is fixed in trunk now.
The second issue is that it looks like the "*“ is lost in the Token. If I have a member function wxString * fff();
Then, I get such token:
--- Code: ---$3 = {m_FullType = L"wxString", m_BaseType = L"wxString", m_Name = L"fff", m_Args = L"()"
, m_BaseArgs = L"()", m_AncestorsString = <g_strEmpty+12> L"", m_FileIdx = 5, m_Line = 43, m_ImplFileIdx = 0, m_ImplLine = 0, m_ImplLineStart = 104, m_ImplLineEnd = 106, m_Scope = tsPrivate, m_TokenKind = tkFunction, m_IsOperator = false, m_IsLocal = true, m_IsTemp = false, m_IsConst = false, m_IsNoExcept = false, m_IsAnonymous = false, m_Index = 20415, m_ParentIndex = 20409
, m_Children = std::set with 0 elements, m_Ancestors = std::set with 0 elements, m_DirectAncestors = std::set with 0 elements, m_Descendants = std::set with 0 elements, m_Aliases = wxArray<T>, m_TemplateArgument = <g_strEmpty+12> L"", m_TemplateType = wxArray<T>, m_TemplateMap = std::map with 0 elements, m_TemplateAlias = <g_strEmpty+12> L"", m_UserData = 0x0, m_TokenTree = 0x12340458, m_Ticket = 68900}
--- End code ---
This means either the m_FullType or the m_BaseType has no "*" information.
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version