1. C++ / Говнокод #15994

    +12

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    // Decompress section data
    if (ERR_SUCCESS != LzmaDecompress(data, dataSize, decompressed)) {
        // Intel modified LZMA workaround
        EFI_COMMON_SECTION_HEADER* shittySectionHeader;
        UINT32 shittySectionSize;
        // Shitty compressed section with a section header between COMPRESSED_SECTION_HEADER and LZMA_HEADER
        // We must determine section header size by checking it's type before we can unpack that non-standard compressed section
        shittySectionHeader = (EFI_COMMON_SECTION_HEADER*) data;
        shittySectionSize = sizeOfSectionHeaderOfType(shittySectionHeader->Type);
        // ...

    Oh shit!

    spb-yuriy, 16 Мая 2014

    Комментарии (1)
  2. C++ / Говнокод #15978

    +16

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    #include <windows.h>
     #include <iostream>
     int main ()
     {
         HINSTANCE result;
         result=ShellExecute(NULL,NULL,L"E:\\.mp3",NULL,NULL,SW_SHOWDEFAULT);
         if ((int)result<=32)
         std::cout << "Error!\nReturn value: " << (int)result << "\n";
         return 0;
     }

    Как написать mp3-плеер на с++ в 10 строк без использования сторонних библиотек?
    Гении с cyberforum знают ответ!

    http://www.cyberforum.ru/cpp-beginners/thread444490-page3.html

    gost, 13 Мая 2014

    Комментарии (30)
  3. C++ / Говнокод #15976

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    switch (impl->used_hash)
                {
                case false:
                    break;
                case true :
                    ..........
            }

    Разбирал сырцы одного "гения" и нашел это...

    LuCiFer, 13 Мая 2014

    Комментарии (31)
  4. C++ / Говнокод #15970

    +13

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    #include <iostream>
    
    using namespace std;
    
    class Foo
    {
    public:
    	void foo()
    	{
    		cout << "Destruct" << endl;
    	}
    };
    
    int main() 
    {
    	void (Foo::*func)() = &Foo::foo;
    	void *adress = (void*&)func;
    	void (*new_func)(Foo*) = (void (*)(Foo*))adress;
    	Foo obj;
    	new_func(&obj);
    }

    Юный падаван постигает силу void-указателей.

    west_coast_coders, 13 Мая 2014

    Комментарии (7)
  5. C++ / Говнокод #15964

    +13

    1. 1
    2. 2
    BOOST_PP_REPEAT(AMOUNT_OF_EMPLACE_CONSTRUCTOR_PARAMETER, GENERATE_EMPLACE_BACK, BOOST_PP_EMPTY()) 
    //Если видишь access violation, то это просто сработали ассерты. Вынеси их в отдельные функции для удобства отладки (см GENERATE_EMPLACE_BACK). Мне пока не понадобилось, а сейчас это делать лениво.

    laMer007, 12 Мая 2014

    Комментарии (4)
  6. C++ / Говнокод #15953

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    auto mesh=mesh_loader.load("wall.x").
    map([](auto m){
      return m.SetPosition(0.f, 0.f, 0.f);
    }).map([=](auto m){
      return m.SetRotation(xr,yr,zr);
    }).map(::std::bind(&Mesh::SetSize, _1, 90, 60, 90)).
    map(&Mesh::RecalculateNormals);

    LispGovno, 10 Мая 2014

    Комментарии (55)
  7. C++ / Говнокод #15947

    +12

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    AttachmentService::MimeType AttachmentService::mimeTypeByCodeKey(const QString &codeKey) const
     {
         if(codeKey.toLower() == QString("MimeType_PDF").toLower())       return MimeType_PDF;
         if(codeKey.toLower() == QString("MimeType_JPEG").toLower())      return MimeType_JPEG;
         if(codeKey.toLower() == QString("MimeType_PNG").toLower())       return MimeType_PNG;
         if(codeKey.toLower() == QString("MimeType_HTML").toLower())      return MimeType_HTML;
         if(codeKey.toLower() == QString("MimeType_ZHTML").toLower())     return MimeType_ZHTML;
         if(codeKey.toLower() == QString("MimeType_TEXT").toLower())      return MimeType_TEXT;
         if(codeKey.toLower() == QString("MimeType_XLS").toLower())       return MimeType_XLS;
         if(codeKey.toLower() == QString("MimeType_DOC").toLower())       return MimeType_DOC;
         if(codeKey.toLower() == QString("MimeType_PPT").toLower())       return MimeType_PPT;
         if(codeKey.toLower() == QString("MimeType_GIF").toLower())       return MimeType_GIF;
         if(codeKey.toLower() == QString("MimeType_BMP").toLower())       return MimeType_BMP;
         if(codeKey.toLower() == QString("MimeType_MPEG").toLower())      return MimeType_MPEG;
         if(codeKey.toLower() == QString("MimeType_MP4").toLower())       return MimeType_MP4;
         if(codeKey.toLower() == QString("MimeType_MP3").toLower())       return MimeType_MP3;
         return MimeType_UNKNOWN;
    }

    Коллега откопал в моём коде, написанном под какими-то веществами по ходу.
    Изначально было сравнение строк как есть, без приведения в нижний регистр, а потом понадобилось подстраховаться от левого регистра символов.

    FlySnake, 09 Мая 2014

    Комментарии (24)
  8. C++ / Говнокод #15932

    +12

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    QVector<int> v1;
    v1.push_back(1);
    v1.push_back(2);
    
    // взяли итератор на нулевой элемент вектора v1
    QVector<int>::iterator it = v1.begin();
    
    // замутили копию
    QVector<int> v2 = v1;
    
    v1[1] = 42;
    *it = 5;
    v2[1] = 100500;
    
    // и что же мы получим?
    qDebug() << v1; // QVector(1, 42)
    qDebug() << v2; // QVector(5, 100500)

    Ловим лулзы с implicit sharing'ом.

    Мораль (она описана в доке): нельзя копировать implicit shared контейнер пока живы и используются неконстантные итераторы на его элементы.

    bormand, 06 Мая 2014

    Комментарии (88)
  9. C++ / Говнокод #15928

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    template<class Container>
    void COW_guard(Container& forUnCow){
      const Container c={};
      cc+=c;
    }

    LispGovno, 06 Мая 2014

    Комментарии (56)
  10. C++ / Говнокод #15893

    +73

    1. 1
    http://bnw.im/p/JCBN9N

    https://bnw.im/u/j123123

    j123123, 04 Мая 2014

    Комментарии (10)