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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
NTSTATUS resize(size_t new_capacity)
{
    NT_ASSERT(new_capacity >= m_size);
    if constexpr (std::is_pod_v<T>) {
        T *new_array = static_cast<T*>(KReallocate(m_size, new_capacity, sizeof(T), m_array, POOL, TAG));
        if (!new_array) {
            return STATUS_NO_MEMORY;
        }
        m_capacity = new_capacity;
        m_array = new_array;
    } else {
        T *new_array = static_cast<T*>(KAllocate(new_capacity, sizeof(T), POOL, TAG));
        if (!new_array) {
            return STATUS_NO_MEMORY;
        }
         for (size_t i = 0; i < m_size; i++) {
            new (&new_array[i]) T(std::move(m_array[i]));
            m_array[i].~T();
        }
        KmdfDeallocate(m_array, TAG);
        m_capacity = new_capacity;
        m_array = new_array;
    }

    return STATUS_SUCCESS;
}

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

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

  • Я так понимаю, эпицентр сего говна - строки 17-18?
    Ответить
    • Х.з., вроде обычное перемещение элементов из одного куска памяти в другой...
      Ответить
    • Хотя коды ошибок и странные префиксы NT и K намекают, что исключения там не используют.
      Ответить
      • Не удивлюсь, если это код Микрософта. Уж больно подозрительно, что тело начинается с NT_ASSERT.
        Ответить
        • И всё-таки KmdfDeallocate и KReallocate не гуглятся. Значит, это всё-таки из неизвестного публике проекта.
          Ответить
          • > Значит, это всё-таки из неизвестного публике проекта.
            Гугл порезал с выдачи проприетарные сорцы (было несколько вытечек). Вот там грепать надо.
            Ответить
                • Яндекс по запросу "KmdfDeallocate" выдаёт одну ссылку. Угадайте с нуля раз какую. Кстати, его AI исправляет запрос, считая, что я сделал опечатку, поэтому приходится нажимать "Отменить". Вот нахрена этот AI в поисковиках?

                  Гугл тоже выдаёт одну ссылку. Туда же.
                  Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8