From: <no...@us...> - 2003-06-23 06:49:35
|
Log Message: ----------- Fix control path warning/crash if verqueryvalue fails Modified Files: -------------- /cvsroot/decaldev/source/DenAgent: AutoUpdate.cpp Revision Data ------------- Index: AutoUpdate.cpp =================================================================== RCS file: /cvsroot/decaldev/source/DenAgent/AutoUpdate.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- AutoUpdate.cpp 20 Jun 2003 20:19:11 -0000 1.10 +++ AutoUpdate.cpp 23 Jun 2003 06:49:34 -0000 1.11 @@ -179,10 +179,10 @@ dwVerSize = ::GetFileVersionInfoSize(const_cast<LPTSTR>(sFile.c_str()), &dwDummy); - if (dwVerSize == 0) - { + if( dwVerSize == 0 ) return true; // if file vsn not available, assume needs updating - } else { + else + { BYTE *pbVersionInfo = reinterpret_cast< BYTE * >(::_alloca(dwVerSize)); ::GetFileVersionInfo(const_cast<LPTSTR>(sFile.c_str()), 0, dwVerSize, pbVersionInfo); @@ -190,29 +190,37 @@ VS_FIXEDFILEINFO *vffi; UINT nLength = sizeof(VS_FIXEDFILEINFO); - if(::VerQueryValue(pbVersionInfo, _T("\\"), reinterpret_cast<LPVOID *>(&vffi), &nLength)) + if( ::VerQueryValue( pbVersionInfo, _T("\\"), reinterpret_cast< LPVOID * >( &vffi ), &nLength ) ) { - // Got it, so format it - int locMajor(0), locMinor(0), locPatch(0), locBuild(0) ; - locMajor = static_cast<int>(HIWORD(vffi->dwFileVersionMS)); - locMinor = static_cast<int>(LOWORD(vffi->dwFileVersionMS)); - locPatch = static_cast<int>(HIWORD(vffi->dwFileVersionLS)); - locBuild = static_cast<int>(LOWORD(vffi->dwFileVersionLS)); - if (locMajor==nMajor) { - if (locMinor==nMinor) { - if (locPatch==nPatch) { - return locBuild<nBuild ; - } else { - return locPatch<nPatch ; - } - } else { - return locMinor<nMinor ; + // Got it, so format it + int locMajor(0), locMinor(0), locPatch(0), locBuild(0); + locMajor = static_cast< int >( HIWORD( vffi->dwFileVersionMS ) ); + locMinor = static_cast< int >( LOWORD( vffi->dwFileVersionMS ) ); + locPatch = static_cast< int >( HIWORD( vffi->dwFileVersionLS ) ); + locBuild = static_cast< int >( LOWORD( vffi->dwFileVersionLS ) ); + + if( locMajor == nMajor ) + { + if( locMinor == nMinor ) + { + if( locPatch == nPatch ) + return locBuild < nBuild; + else + return locPatch < nPatch; } - } else { - return locMajor<nMajor ; + + else + return locMinor < nMinor ; } + + else + return locMajor < nMajor ; } - } + + // problem with VerQueryValue... maybe updating will fix it. + else + return true; + } } void AutoUpdateSource::AddRequirement(UpdateRequirement reqUpdate) |