int nLen = MAX_CLASSNAME_LENGTH * 4 + 400; // this should be enough
wchar_t *buff = (wchar_t *) qb.AllocThrows(nLen * sizeof(wchar_t));
+ wchar_t *buffEnd = buff + nLen;
while (ptr < end)
{
if (isRetAddr((TADDR)*ptr, &whereCalled))
{
- if (_snwprintf_s(buffPtr, buff+NumItems(buff)-buffPtr-1, _TRUNCATE, W("STK[%08X] = %08X "), (size_t)ptr, *ptr) <0)
+ if (_snwprintf_s(buffPtr, buffEnd - buffPtr, _TRUNCATE, W("STK[%08X] = %08X "), (size_t)ptr, *ptr) < 0)
{
return(0);
}
ftn = ExecutionManager::GetCodeMethodDesc((PCODE)(*ptr));
}
- if(_snwprintf_s(buffPtr, buff+ nLen -buffPtr-1, _TRUNCATE, W("%s "), kind) < 0)
+ if (_snwprintf_s(buffPtr, buffEnd - buffPtr, _TRUNCATE, W("%s "), kind) < 0)
{
return(0);
}
if (ftn != 0)
{
// buffer is not large enough
- if( formatMethodDesc(ftn, buffPtr, static_cast<DWORD>(buff+ nLen -buffPtr-1)) == NULL)
+ if (formatMethodDesc(ftn, buffPtr, static_cast<DWORD>(buffEnd - buffPtr)) == NULL)
{
return(0);
}
}
else
{
- wcsncpy_s(buffPtr, nLen - (buffPtr - buff), W("<UNKNOWN FTN>"), _TRUNCATE);
+ wcsncpy_s(buffPtr, buffEnd - buffPtr, W("<UNKNOWN FTN>"), _TRUNCATE);
buffPtr += wcslen(buffPtr);
}
if (whereCalled != 0)
{
- if(_snwprintf_s(buffPtr, buff+ nLen -buffPtr-1, _TRUNCATE, W(" Caller called Entry %X"), whereCalled) <0)
+ if (_snwprintf_s(buffPtr, buffEnd - buffPtr, _TRUNCATE, W(" Caller called Entry %X"), whereCalled) < 0)
{
return(0);
}
buffPtr += wcslen(buffPtr);
}
- wcsncpy_s(buffPtr, nLen - (buffPtr - buff), W("\n"), _TRUNCATE);
+ wcsncpy_s(buffPtr, buffEnd - buffPtr, W("\n"), _TRUNCATE);
buffPtr += wcslen(buffPtr);
WszOutputDebugString(buff);
}
if (pMT != 0)
{
buffPtr = buff;
- if( _snwprintf_s(buffPtr, buff+ nLen -buffPtr-1, _TRUNCATE, W("STK[%08X] = %08X MT PARAM "), (size_t)ptr, *ptr ) <0)
+ if ( _snwprintf_s(buffPtr, buffEnd - buffPtr, _TRUNCATE, W("STK[%08X] = %08X MT PARAM "), (size_t)ptr, *ptr ) < 0)
{
return(0);
}
buffPtr += wcslen(buffPtr);
- if( formatMethodTable(pMT, buffPtr, static_cast<DWORD>(buff+ nLen -buffPtr-1)) == NULL)
+ if (formatMethodTable(pMT, buffPtr, static_cast<DWORD>(buffEnd - buffPtr)) == NULL)
{
return(0);
}
buffPtr += wcslen(buffPtr);
- wcsncpy_s(buffPtr, nLen - (buffPtr - buff), W("\n"), _TRUNCATE);
+ wcsncpy_s(buffPtr, buffEnd - buffPtr, W("\n"), _TRUNCATE);
WszOutputDebugString(buff);
}
if (true) { DEBUG_ASSURE_NO_RETURN_BEGIN(GCPROTECT)
#define GCPROTECT_BEGININTERIOR(ObjRefStruct) do { \
+ /* work around Wsizeof-pointer-div warning as we */ \
+ /* mean to capture pointer or object size */ \
+ UINT subjectSize = sizeof(ObjRefStruct); \
FrameWithCookie<GCFrame> __gcframe( \
(OBJECTREF*)&(ObjRefStruct), \
- sizeof(ObjRefStruct)/sizeof(OBJECTREF), \
+ subjectSize/sizeof(OBJECTREF), \
TRUE); \
/* work around unreachable code warning */ \
if (true) { DEBUG_ASSURE_NO_RETURN_BEGIN(GCPROTECT)