Code WTFs
Code WTF #3
Сьогодні ще цікавого надибав:
bool test = (mail.Find('@') == -1);
if(tsInspireDate.GetDays()<15 && !active && (mail.Find('@') == -1))
{ /* ...skipped... */ }
І ніби ж не індуси…
P.S. Хоча, звісно, всяке буває… Я і у себе в коді, що часто перероблювався, якось перли знаходив (коли один дрібний фрагмент змінюєш, а попередній шматок коду, що його дублює забуваєш видалити).
Driver code WTF
Вчора наш драйверщик шукаючи одну багу в коді драйвера знайшов іншу, непримітну, залишену колишнім розробником цього драйвера. Знайдіть її і ви. Це гарна вправа на знання деяких хитрих програмістських методик.
Сирці я трохи підравив, повикидавши згадки назви драйверу та більшу частину несуттєвого до баги коду і додавши своє визначення SecurityCookie (це, до речі, теж підказка
).
ULONG SecurityCookie = 0xDEADBEEF;
[ ... skipped ... ]
pUserNotificationMap->MappedSize =
FloatingUnitSize
+ sizeof(NOTIFICATION_MAP)
+ sizeof(SecurityCookie);
pUserNotificationMap->MappedUnits = 1;
RtlCopyBytes(
&pUserNotificationMap->NotificationUnit[0].NotificationInfo,
&NotifInfo,
sizeof(NotifInfo) );
*((PULONG)((PCHAR)pUserNotificationMap+pUserNotificationMap->MappedSize)) = SecurityCookie;
status = CommitNotificationUnit(
pContext,
pInternalPolicyRule,
pCtxString,
pCtxThread,
&pUserNotificationMap->NotificationUnit[0],
sizeof(NOTIFICATION_UNIT) + FloatingUnitSize );
//
// Overflowed? Check out!
//
if( *((PULONG)((PCHAR)pUserNotificationMap+pUserNotificationMap->MappedSize))
!= SecurityCookie )
{
status = STATUS_HEAP_CORRUPTION;
ReportDesignError_Leave( "Memory corruption detected!" );
}
P.S. Підказка: “за що боролись, на те й напоролись”
Code WTF
Вчора потрібно було пофіксити багу в продукті і поки придивлявся місце для фіксу натрапив на таке:
ATL::CString strText;
SYSTEMTIME st = {0};
GetLocalTime(&st);
if (st.wHour<10)
strText.Format(_T("%d/%d/%d, 0%d:%d"),
st.wDay,st.wMonth,st.wYear, st.wHour, st.wMinute);
else
strText.Format(_T("%d/%d/%d, %d:%d"),
st.wDay,st.wMonth ,st.wYear, st.wHour, st.wMinute);
m_date.SetWindowText(strText);
Ні, код абсолютно робочий, але ж…
m_date.SetWindowText(CTime::GetCurrentTime().Format(_T("%d/%m/%Y %H:%M")));
По-моєму, краще, нє?
P.S. До речі, мабуть заведу собі в блозі відповідний розділ з wtf’ами

