[
http://issues.apache.org/jira/browse/XERCESC-1593?page=comments#action_12383179
]
Lukas Grützmacher commented on XERCESC-1593:
--------------------------------------------
I've checked again now the code at traverseschema.cpp:6490. Now I agree that
the code looks safe now. But it is really hard to understand.
I know there are many compilers in the world. But I think MSVC is one of the
major compilers for the Windows platform ("your" binary release is also build
by MSVC, isn't it?). So why not take advantages from this compiler. Yes, it has
not found out that the code is currently safe. But I was also not able to see
this first time ;)
I want to explain my target "always warning free". In the past I've made the
experiance that compiling in warning level 4 can really find problems in the
code, e.g. unititialized values which really occur. So we (my company) has
decided to enforce level 4. Then it is easier to fix all warnings instead of
reviewing all warnings each time of recompile.
Further: Now you have checked that the warning at traverseschema.cpp:6490 is
not critical and you keep this state in your mind. Later on somebody changes
the code around so that is not safe anymore. But you may not check anymore this
warning and you may really run into problems.
For the problem of initial values I want to give an example:
change
XMLAttDef::DefAttTypes defAttType; (traverseschema.cpp:6449)
to
XMLAttDef::DefAttTypes defAttType = XMLAttDef::DefAttTypes_Unknown;
In the case the value is really not overwritten and so used with
DefAttTypes_Unknown it is better to check against DefAttTypes_Unknown instead
of checking all other expected values. If it is really always overwritten so
this "costs" are only "DWORD PTR _defAttType$27151[ebp], -1".
> critical Warning on compiling XercesC 2.7.0
> -------------------------------------------
>
> Key: XERCESC-1593
> URL: http://issues.apache.org/jira/browse/XERCESC-1593
> Project: Xerces-C++
> Type: Bug
> Components: Build
> Versions: 2.7.0
> Environment: MSVC 2003 (7.1)
> Set Warning Level to 4
> Reporter: Lukas Grützmacher
>
> I've compiled XercesC 2.7.0 from sources with MSVC2003.
> I've changed the project settings to use always warning level 4.
> Thereby I found a lot of warnings. IMHO some of them are critical:
> xerces-c-src_2_7_0\src\xercesc\validators\schema\traverseschema.cpp(6490) :
> warning C4701: local variable 'defAttType' may be used without having been
> initialized
> xerces-c-src_2_7_0\src\xercesc\util\regx\token.cpp(259) : warning C4701:
> local variable 'ret2' may be used without having been initialized
> xerces-c-src_2_7_0\src\xercesc\util\regx\RegularExpression.cpp(184) : warning
> C4244: 'argument' : conversion from 'XMLInt32' to 'const XMLCh', possible
> loss of data
> xerces-c-src_2_7_0\src\xercesc\util\platforms\win32\win32platformutils.cpp(795)
> : warning C4701: local variable 'retVal' may be used without having been
> initialized
> xerces-c-src_2_7_0\tests\xserializertest\xserializertest.cpp(537) : warning
> C4701: local variable 'duration' may be used without having been initialized
> Many others are not critical but sould be fixed, too. Here are some examples:
> DFAContentModel.cpp
> ..\..\..\..\..\src\xercesc\validators\common\CMNode.hpp(129) : warning C4245:
> 'initializing' : conversion from 'int' to 'unsigned int', signed/unsigned
> mismatch
> xerces-c-src_2_7_0\src\xercesc\internal\XSAXMLScanner.cpp(310) : warning
> C4245: 'argument' : conversion from '' to 'unsigned int', signed/unsigned
> mismatch
> xerces-c-src_2_7_0\src\xercesc\framework\psvi\XSValue.cpp(1721) : warning
> C4189: 'strLen' : local variable is initialized but not referenced
> xerces-c-src_2_7_0\src\xercesc\dom\deprecated\DOM_RangeException.cpp(36) :
> warning C4244: 'argument' : conversion from
> 'xercesc_2_7::DOM_RangeException::RangeExceptionCode' to 'short', possible
> loss of data
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]