This is an aborted attempt to make wxWidgets code compile without warnings
when using MSVC 11 /analyze option, as it was supposed to have become much
better. Unfortunately it still produces way too many false positives to be
really useful, in particular NULL pointer detection is completely broken as
even the code such as (from object.cpp):
wxClassInfo *info = sm_first;
while (info)
{
if ( info->m_next == this )
...
}
provokes tons of warnings about "info" being NULL inside the loop which is
clearly impossible.
So this commit just fixes a few obvious warnings, mostly about variable
shadowing but also a couple about possibly passing NULL to memcpy().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72496
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
static CharType *StrCopy(const CharType *src, size_t len)
{
CharType *dst = (CharType*)malloc(sizeof(CharType) * (len + 1));
- memcpy(dst, src, sizeof(CharType) * (len + 1));
+ if ( dst )
+ memcpy(dst, src, sizeof(CharType) * (len + 1));
return dst;
}
case wxCMD_LINE_VAL_DATE:
{
wxDateTime dt;
- wxString::const_iterator end;
- if ( !dt.ParseDate(value, &end) || end != value.end() )
+ wxString::const_iterator endDate;
+ if ( !dt.ParseDate(value, &endDate) || endDate != value.end() )
{
errorMsg << wxString::Format(_("Option '%s': '%s' cannot be converted to a date."),
name.c_str(), value.c_str())
// (indirectly) set the year correctly
while ( (nLostWeekDays % 7) != 0 )
{
- nLostWeekDays += year++ % 4 ? 1 : 2;
+ nLostWeekDays += (year++ % 4) ? 1 : 2;
}
// finally move the year below 2000 so that the 2-digit
if ( len > lenRest )
continue;
- const wxString::const_iterator pEnd = p + len;
- if ( wxString(p, pEnd).CmpNoCase(dateStr) == 0 )
+ const wxString::const_iterator pEndStr = p + len;
+ if ( wxString(p, pEndStr).CmpNoCase(dateStr) == 0 )
{
// nothing can follow this, so stop here
- p = pEnd;
+ p = pEndStr;
int dayDiffFromToday = literalDates[n].dayDiffFromToday;
*this = Today();
*this += wxDateSpan::Days(dayDiffFromToday);
}
- *end = pEnd;
+ *end = pEndStr;
return true;
}
#ifdef __WXWINCE__
return wxString(wxT("\\Windows"));
#elif defined(__WINDOWS__) && !defined(__WXMICROWIN__)
- wxChar buf[256];
- GetWindowsDirectory(buf, 256);
+ wxChar buf[MAX_PATH];
+ if ( !GetWindowsDirectory(buf, MAX_PATH) )
+ {
+ wxLogLastError(wxS("GetWindowsDirectory"));
+ }
+
return wxString(buf);
#elif defined(__WXMAC__) && wxOSX_USE_CARBON
return wxMacFindFolderNoSeparator(kOnSystemDisk, 'macs', false);
{
size_t size = (wxStrlen(s) + 1) * sizeof(wxChar32);
wxChar32 *ret = (wxChar32*) malloc(size);
- memcpy(ret, s, size);
+ if ( ret )
+ memcpy(ret, s, size);
return ret;
}
#endif
extWithDot = wxT('.');
extWithDot += ext;
- wxRegKey key(wxRegKey::HKCR, extWithDot);
- if ( !key.Exists() ) key.Create();
- key.SetValue(wxEmptyString, filetype);
+ wxRegKey key2(wxRegKey::HKCR, extWithDot);
+ if ( !key2.Exists() )
+ key2.Create();
+ key2.SetValue(wxEmptyString, filetype);
// now set any mimetypes we may have, but ignore it if none
- const wxString& mimetype = ftInfo.GetMimeType();
- if ( !mimetype.empty() )
+ const wxString& mimetype2 = ftInfo.GetMimeType();
+ if ( !mimetype2.empty() )
{
// set the MIME type
- ok = key.SetValue(wxT("Content Type"), mimetype);
+ ok = key2.SetValue(wxT("Content Type"), mimetype2);
if ( ok )
{
// create the MIME key
wxString strKey = MIME_DATABASE_KEY;
- strKey << mimetype;
+ strKey << mimetype2;
wxRegKey keyMIME(wxRegKey::HKCR, strKey);
ok = keyMIME.Create();
envstr += '=';
if ( value )
envstr += value;
- _tputenv(envstr.t_str());
+ if ( !_tputenv(envstr.t_str()) )
+ return false;
#else // other compiler
if ( !::SetEnvironmentVariable(var.t_str(), value) )
{
// just launched process
if ( !ddeServer.empty() )
{
- bool ok;
+ bool ddeOK;
// give the process the time to init itself
//
case WAIT_TIMEOUT:
wxLogDebug(wxT("Timeout too small in WaitForInputIdle"));
- ok = false;
+ ddeOK = false;
break;
case 0:
// ok, process ready to accept DDE requests
- ok = wxExecuteDDE(ddeServer, ddeTopic, ddeCommand);
+ ddeOK = wxExecuteDDE(ddeServer, ddeTopic, ddeCommand);
}
- if ( !ok )
+ if ( !ddeOK )
{
wxLogDebug(wxT("Failed to send DDE request to the process \"%s\"."),
cmd.c_str());
if (!rc)
{
wxLogError(_("Cannot read typename from '%s'!"), m_volName.c_str());
- return m_isOk;
+ return false;
}
m_dispName = fi.szDisplayName;
// all tests passed.
- return m_isOk = true;
+ m_isOk = true;
+ return true;
} // Create
//=============================================================================