- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
void free_transaction(p_transaction_t trans) {
p_transaction_t next = trans->next;
while (next) {
trans->next = next->next;
free_transaction(next);
next = trans->next;
}
xfree(trans);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 5
+142
void free_transaction(p_transaction_t trans) {
p_transaction_t next = trans->next;
while (next) {
trans->next = next->next;
free_transaction(next);
next = trans->next;
}
xfree(trans);
}
Освобождение списка.
+18
template <typename Derived>
class Base {
public:
void doSmth() {
// ...
static_cast<Derived*>(this)->OnParseAndHandle();
//...
}
};
class MyClass: public Base<MyClass> {
public:
void OnParseAndHandle() {
// ...
}
};
Если Вы не верите в виртуальные методы, то шаблоны Вам в помощь.
А может я идиот и чего-то не понял?
+136
memset( fc->key, 0, KEY_LEN+1);
memset( fc->value, 0, VALUE_LEN+1);
strncpy(fc->key, key, strlen( key) + 1);
strncpy(fc->value, value,strlen( value) + 1);
совершенное непонимание работы ф-ии strncpy
+96
char str[STR_LEN + 1];
strncpy(str, inpust_str, STR_LEN);
xxx[STR_LEN] = '\0';
str[ strlen(str) ] = ':';
str[ strlen(str) + 1 ] = '1';
str[ strlen(str) + 2 ] = '\0';
Попытка добавить ":1" к строке.
Первым же "str[ strlen(str) ] = ':';" гробим нулевой символ в конце строки. Дальнейшие вызовы "strlen" - просто фигня какая-то. Ну и портим память.
+137.6
for( unsigned int i = 0; i < strlen(str); i++)
{
if ( str[i] == '-')
{
str[i] = '\0';
break;
}
}
'strlen' в условии цикла - это вычисление инварианта в теле цикла.
Вообще этот цикл реально можно заменить одним вызовом 'strchr'