- 1
- 2
- 3
- 4
ClassName::~ClassName()
{
memset( this, 0, sizeof( *this ) );
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+179
ClassName::~ClassName()
{
memset( this, 0, sizeof( *this ) );
}
Написано коллегой из теплой страны. Случайно нашел в коде :)
+174
(addNewItem) ? (isVideoAudioAttached = true) : (isVideoAudioAttached = false);
addNewItem и isVideoAudioAttached типа bool
+172
CString convertInt2Str(int i_Number, int i_NumDigits)
{
CString str = "";
for(int j=1; j<i_NumDigits; j++)
{
int digits = (int) pow((float) 10, j);
if(i_Number<digits) str += "0";
}
CString num;
num.Format("%d", i_Number);
return str+num;
}
Adding leading zeros...
+162
Speed = ini.GetInt("Speed" , Speed /(1 mm_s )) * (-1 mm_s);
Скорость задается изначально как положительное число, но в ресчетах используется ее отрицательное значение.
+162
for (i = 0;i<n;i++)
{
for (j = 0;j<m;j++)
{
if (j=m)
{
j = 0;
break;
}
}
}
Мастер! Без комментариев.
P.S. Как это ни странно, автор предпочел остаться неизвестным :)
+170
transaction::~transaction()
{
if (db_) {
int rc = db_->execute(fcommit_ ? "COMMIT" : "ROLLBACK");
if (rc != SQLITE_OK)
throw database_error(*db_);
}
}
(c) http://code.google.com/p/sqlite3pp/source/browse/trunk/sqlite3pp.cpp#486
пожалуй, здесь нехватает картинки в стиле Nichtlustig с подписью "лемминг делает throw в деструкторе"
+152
BOOL NAKED CompareCurrentProcess(PCHAR pszName)
{
/*
1. Found PEB
2. Found _RTL_USER_PROCESS_PARAMETERS
3. Found _RTL_USER_PROCESS_PARAMETERS->ImagePathName
4. Convert UNICODE to ANSI
5. compare strings
*/
__asm {
MOV ESI,ESP // SAVE STACK PTR
MOV EAX,DWORD PTR FS:[0x30] // eax == PEB
MOV EAX,DWORD PTR DS:[EAX+0x10] // eax == _RTL_USER_PROCESS_PARAMETERS
ADD EAX,0x38 // eax == _RTL_USER_PROCESS_PARAMETERS->ImagePathName
XOR EDX,EDX //
XOR ECX,ECX //
XOR EDI,EDI //
MOV CL, BYTE PTR [EAX] // CL = UNICODE_STRING.Length in bytes
SUB ESP,ECX // reserve in stack CL bytes
ADD EAX,4 // EAX ptr to WCHAR ImagePathName
MOV EAX,DWORD PTR [EAX] // EAX = PWCHAR
next_char:
CMP CL,0 // WCHAR end
JZ end;
MOV DL,BYTE PTR [EAX] // DL == *(PCHAR)WCHAR
ADD EAX,2 // GOTO next WIDEchar
MOV BYTE PTR [ESP],DL // SAVE char in memory reserved in stack
INC ESP // pStr++
INC EDI // pStrLen++
SUB CL,2 // Length--;
jmp next_char // goto_next;
end:
MOV BYTE PTR [ESP],0 // *pStr = 0; null terminated
SUB ESP,EDI // pStr = (PCHAR)(pStr - pStrLen)
XOR EDX,EDX
XOR ECX,ECX
mov ecx,esp // ecx = pStr
mov edx,esp // edx = pStr
//
// HERE FOUND image file name
m_loop:
cmp edi,0
jz file_founded
cmp byte ptr [edx],0x5C // '\'
JZ founded;
inc edx
dec edi
jmp m_loop
founded:
dec edi
mov ecx,edx
inc edx
jmp m_loop
file_founded:
push esi
inc ecx
push ecx
push dword ptr [esi+4]
call my_strcmp
pop esi
mov esp,esi
ret
}
}
Источник: http://www.wasm.ru/forum/viewtopic.php?id=40652
Что может быть плохого в функции кроме того, что эту задачу можно было бы решить тонной адекватных вариантов?
+168
bool SomeFuncrion ()
{
...................................
if (dbAttrList.size())
return true;
else
return false;
scroll( 0 , 0 );
}
А вдруг?
+166
void СSomeClass::InternalRemovePath( QString qsPath, int pUIModule )
{
QProgressDialog * pDlg = (QProgressDialog *)pUIModule;
...................
}
.......................
void someFunction ()
{
..................
QProgressDialog * pProgress = NULL;
pProgress = new QProgressDialog( QObject::tr( "Deleting...") , QObject::tr( "Abort" ), 0, nTotal, NULL );
InternalRemovePath( qsPath , (int) pProgress );
..................
}
И по коду таких вещей (приведение указателей к int при передаче в функции) очень много. Пока собрал проект, задолбался.
Интересно, что автор курил? Хотя, нет - тут уже что-то потяжелее.
+165
#define DEFAULT_TIMEOUT 30000
................................................
class CSettings //: public QSettings
{
................................................
static QVariant svalue( QString qs, QVariant defValue );
................................................
};
................................................
QString qs = QString("%1").arg( DEFAULT_TIMEOUT );
m_nTimeout = CSettings::svalue("connection/Timeout", qs.toAscii().data()).toString().toInt();