Developer forums (C::B DEVELOPMENT STRICTLY!) > CodeCompletion redesign
codecompletion warnings under ANSI Windows
(1/1)
stahta01:
I have about a dozen warnings when Compiling Code::Blocks under Windows with ANSI (Non Unicode) Build of trunk.
Does anybody care?
Edit: All dozen seem to be cause by the same line of code in the header.
Tim S.
Example warning below.
--- Code: ---src\plugins\codecompletion\parser\token.h|96|warning: format '%d' expects type 'int', but argument 4 has type 'long int'|
--- End code ---
Patch
--- Code: ---Index: src/plugins/codecompletion/parser/token.h
===================================================================
--- src/plugins/codecompletion/parser/token.h (revision 7041)
+++ src/plugins/codecompletion/parser/token.h (working copy)
@@ -88,7 +88,7 @@
{
const long totalTime = it->first->m_StopWatch.Time();
wxString log;
- log.Printf(_T("\"%s\" used time is %d minute(s), %ld.%03ld seconds; call times is %d."),
+ log.Printf(_T("\"%s\" used time is %ld minute(s), %ld.%03ld seconds; call times is %d."),
it->second.wx_str(),
(totalTime / 60000),
(totalTime / 1000) % 60,
--- End code ---
oBFusCATed:
Me cares, on linux 64bit int is 32bit, long int is 64bit, so these are real errors, especially when used for non-logging purposes.
Jenna:
There are more (potential dangerous or at least error-prone) warnings (compiled with -Wextra):
--- Quote ---/home/jens/codeblocks-build/codeblocks.trunk/src/plugins/codecompletion/parser/tokenizer.h:358:36: warning: comparison of unsigned expression < 0 is always false
--- End quote ---
--- Quote --- /** Return (peek) the previous character */
wxChar PreviousChar() const
{
if ( ((m_TokenIndex - 1) < 0) || (m_BufferLen==0) ) // (m_TokenIndex - 1) >= m_BufferLen can never be true
return 0;
return m_Buffer.GetChar(m_TokenIndex - 1);
};
--- End quote ---
and
--- Quote ---/home/jens/codeblocks-build/codeblocks.trunk/src/plugins/codecompletion/parser/tokenizer.h:391:51: warning: comparison of unsigned expression >= 0 is always true
--- End quote ---
--- Quote --- /** Check the previous char before EOL is a backslash */
inline bool IsBackslashBeforeEOL()
{
wxChar last = PreviousChar();
// if DOS line endings, we 've hit \r and we skip to \n...
if (last == _T('\r') && (m_TokenIndex - 2 >= 0))
return m_Buffer.GetChar(m_TokenIndex - 2) == _T('\\');
return last == _T('\\');
}
--- End quote ---
--- Code: --- unsigned int m_TokenIndex;
--- End code ---
MortenMacFly:
--- Quote from: jens on March 08, 2011, 07:34:37 pm ---There are more (potential dangerous or at least error-prone) warnings (compiled with -Wextra):
--- End quote ---
So what about:
--- Quote --- /** Return (peek) the previous character */
wxChar PreviousChar() const
{
if ( (m_TokenIndex==0) || (m_BufferLen==0) ) // (m_TokenIndex - 1) >= m_BufferLen can never be true
return 0;
return m_Buffer.GetChar(m_TokenIndex - 1);
};
--- End quote ---
and
--- Quote --- /** Check the previous char before EOL is a backslash */
inline bool IsBackslashBeforeEOL()
{
wxChar last = PreviousChar();
// if DOS line endings, we 've hit \r and we skip to \n...
if (last == _T('\r') && (m_TokenIndex > 1))
return m_Buffer.GetChar(m_TokenIndex - 2) == _T('\\');
return last == _T('\\');
}
--- End quote ---
???
Navigation
[0] Message Index
Go to full version