Кресты / Говнокод #5699 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
std::auto_ptr<ItemDesc> desc(new ItemDesc());
...
m_items.insert(desc->m_item->m_name, desc.release());

Да, я тоже говнокодер. А ведь предупреждали...

Запостил: Kirinyale Kirinyale, (Updated )

Комментарии (13) RSS

    • Может быть в desc.release() ?
      Правда хотелось бы узнать, что за тип у m_items.
      Ответить
    • Говнокод в том, что порядок вычисления аргументов никем не зафиксирован.

      Пришлось долго и вдумчиво ловить крэш на релизе из-за того, что после оптимизаций release() выполнялся раньше, а при вычислении первого аргумента шло обращение уже к нулевому указателю.
      Ответить
      • Да, не заметил, что в том же выражении desc используется дважды. Тогда говнокод, согласен.

        desc->m_item->m_name следовало бы выделить в отдельную переменную.
        Ответить
        • Так и сделал, когда заметил. Точнее, выделил в переменную релизнутый указатель, чтоб не копировать строку.

          Мейерс о такой хрени писал. А я читал. Но забыл.
          Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8