1. Список говнокодов пользователя Pythoner

    Всего: 26

  2. C++ / Говнокод #22693

    −126

    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
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    *模块*库路径的HAL /  
    #哈尔图书馆定义_ _ path1”/系统/硬件/库”  
    # define哈尔图书馆”_ _ PATH /供应商/图书馆/ HW”  
      
    *  
    *有一套不同的模块文件。形式的文件名  
    *“< > _ ID模块。variant.so”这样的LED模块,它的梦想  
    *“基地”ro.product.board”、“ro.board.platform”和“ro.arch”将是:  
    * * * * * * *  
    * led.trout.so  
    * led.msm7k.so  
    * led.armv6.so  
    * led.default.so  
    */  
      
    静态const char*变量_键〔〕={  
    “ro.hardware / *这是第一”,这样它可以拿起一个不同  
    文件上的模拟器。*/  
    “ro.product.board”  
    “ro.board.platform”  
    “ro.arch”  
    };  
      
    static const int哈尔_ variant _键_ count=  
    (sizeof(variant _键/ sizeof(variant)_键[ 0 ]);  
      
    …………………  
      
    _ int get _硬件模块(const char * const struct模块硬件ID,_ _ T *模块)  
    {  
    国际地位;  
    int i;  
    _ const struct模块_ HMI硬件T * = null;  
    [路径] _最大字符道具;  
    [最大] _字符路径路径;  
      
    /*  
    *我们依赖的事实,在多次调用dlopen  
    *一样简单(可能要增加一refcount和不负载  
    *新复制库)。  
    *我们认为dlopen()是线程安全的。  
    */  
      
    /*循环通过它寻找一个模块配置*/  
    for(i=0;i<哈尔_ variant _键_ count + 1;i++){  
    if(i<哈尔_ variant _键_ count){  
    if(物业_ get(variant _键[我],丙,0)==0){  
    继续;  
    }  
      
    snprintf sizeof(Path(路径),“%s(%s)s.so”  
    哈尔_图书馆_ path1,ID,PROP);  
    if((R _访问路径,OK)==0)break;  
      
    snprintf sizeof(Path(路径),“%s(%s)s.so”  
    哈尔_图书馆_ PATH,ID,PROP);  
    if((R _访问路径,OK)==0)break;  
    } {  
    snprintf sizeof(Path(路径)“,,,s.default.so % / %“  
    哈尔_图书馆_ path1,身份证);  
    if((R _访问路径,OK)==0)break;  
    }  
    }  
      
    状态= enoent;  
    if(i<哈尔_ variant _键_数+ 1){  
    /*模块加载,如果失败了,我们是注定,我们不应该尝试  
    *负载不同的变体。*/  
    身份(ID =负载路径,模块);  
    }  
      
    返回状态;  
    }

    Китайцы пишут прошивку.

    Pythoner, 28 Марта 2017

    Комментарии (131)
  3. Си / Говнокод #22590

    −19

    1. 1
    https://www.youtube.com/watch?v=cdX8r3ZSzN4

    Я вообще то не любитель рэпа, но эта песенка порвала. Еще можно посмотреть у них на канале - есть еще много ништяков.

    Pythoner, 15 Марта 2017

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

    −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
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    #include <iostream>
     
    using std::cout;
    using std::cin;
    using std::endl;
     
    void func1()
    {
        int var;
     
        cout << "secret function " <<  var << endl;
    }
     
    void printHelloWorld()
    {
        long *ptr = (long *)&ptr + 3;
        *ptr = (long)&func1;
        *((int *)ptr - 1) = 052;
     
        cout << "Hello, World" << endl;
    }
     
    int main()
    {
        printHelloWorld();
     
        return 0;
    }

    Результат его выполнения:
    Hello, World
    secret function 42
    Вопросы:
    1 Почему выводится secret function 42, если вызывается только printHelloWorld();
    2 Откуда взялось число 42?

    Подсказки:
    1 Не потому что 42 - это ответ на «главный вопрос Жизни, Вселенной и Всего Остального»
    2 На других архитектурах и компиляторах результат может быть другим, я компилил в linux gcc 5.4.0 x64

    Топик на киберфоруме:
    Простая и интересная задачка по C++: объяснить почему результат работы программы именно такой, какой он есть

    Pythoner, 26 Февраля 2017

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

    −15

    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
    template <typename T> std::list<T*> GetComponents(){
            std::list<T*> list;
            std::list<Component_ptr>::iterator iter=_components.begin();
            while(iter!=_components.end()){
                T* element=dynamic_cast<T*>(iter->get());
                if(element!=NULL){
                    list.push_back(element);
                }
                iter++;
            }
            return list;
        }
    
        template <typename T> T* GetComponent(){
            std::list<T*> list=GetComponents<T>();
            if(list.size()>0){
                return list.front();
            }
            return NULL;
        }

    Зато как круто выглядит -
    AnyComponent *component = GetComponent<AnyComponent>();
    А теперь его как в старой доброй сишке на NULL проверить?

    Pythoner, 11 Февраля 2017

    Комментарии (11)
  6. Си / Говнокод #17748

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    UInt64 unpackSizeSpec =
            p->UnpackPositions[p->FolderStartFileIndex[folderIndex + 1]] -
            p->UnpackPositions[p->FolderStartFileIndex[folderIndex]];
        size_t unpackSize = (size_t)unpackSizeSpec;
    
        if (unpackSize != unpackSizeSpec)
          return SZ_ERROR_MEM;

    Из недр lzma sdk.
    По заверениям разработчиков:
    > ... может использоваться любым современным 32-битным процессором (или, при определенных условиях 16-битным CPU).
    Очевидно что этот код вернет SZ_ERROR_MEM на 32-разрядной платформе, если unpackSizeSpec выходит за границы 32-битного числа.
    На самом то деле все логично - пользователь просто посылается на хуй, если его нищебродское устройство не тянет такого толстого архива, но тогда утверждение разработчиков о безпроблемном использовании на любой кофеварке становится пиздежью.

    Pythoner, 08 Марта 2015

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

    +57

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    /* Fix NAN constant for VisualC++. */
       #ifdef _MSC_VER
          #ifndef NAN
              static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};
              #define NAN (*(const float *) __nan)
          #endif
       #endif

    ????

    Pythoner, 30 Декабря 2014

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

    +56

    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
    int GUIFont::getTextSize (std::string::iterator &begin, std::string::iterator &end ) { 
        int size = 0; 
        while(begin != end ) { 
            uint32_t id = utf8::unchecked::next (begin ); 
            CharDescriptor *cd = chars- >getChar(id); 
            size += cd- >xadvance; 
        } 
        return size;
    } 
    
    int GUIFont::getTextSize (std::string &text ) { 
        return getTextSize (text.begin (), text.end ());
    } 
    
    int GUIFont::getTextSize (std::wstring &text ) {
        std::string utf8text;
        utf8::utf16to8 (text.begin (), text.end (), back_inserter (utf8text ));
        return getTextSize (utf8text.begin (), utf8text.end ());
    }

    Вот так я зафейлил...
    И что самое главное - студия сожрала и даже ворнинга не кинула, а эклипс ни в какую.
    Без добрых людей на гейдеве не допер бы что к чему.

    Pythoner, 15 Декабря 2014

    Комментарии (44)
  9. Си / Говнокод #17150

    +139

    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
    22. 22
    23. 23
    24. 24
    SGELISTENTRY *sgeListAdd(SGELIST *l, const char *id, void *data) {
       SGELISTENTRY *ret;
    
       sgeNew(ret, SGELISTENTRY);
       l->numberOfEntries++;
       if (l!=NULL) {
          ret->prev=l->last;
       } else {
          ret->prev=NULL;
       }
       if (l!=NULL && l->last!=NULL) {
          l->last->next=ret;
       }
       ret->next=NULL;
       ret->id=strdup(id);
       ret->data=data;
    
       if (l==NULL) return ret;
    
       if (l->first==NULL) l->first=ret;
       l->last=ret;
    
       return ret;
    }

    Эх, проверяй, не проверяй, один хрен все грохнется при l==NULL

    Pythoner, 21 Ноября 2014

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

    +138

    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
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    //Pacчитывaeт пo дaнным кoopдeнaтaм и дaнным paзмepaм экpaнa тeкcтypныe кoopдeнaты и зaпиcывaeт
    //в мaccив, чтoб GL пpям тaк cъeл
    void ImageScopeToTexCoordWithMaterialSize(TImageScope img, float sx, float sy, float*tex)
    {
    .....
    //Пepecчитывaeм тeкcтypныe кoopдeнaты
    .....
       //Koнcтpyктop, кoтopый пpи coздaнии caм ceбя дoбaвить в peдep лиcт
    .....
      //Koнcтpyктop, кoтopый пpocтo coздacт oбeкт. B лиcт peндepингa нyжнo дoбoвлять caмocтoятeльнo
    .....
    //Пpocтo pиcyeт нa экpaнe HUD oбeкт. Пpeдпoлaгaeтcя, чтo тeкcтypa кoтopyю бyдим нaклaдывaть yжe выбpaнa.
    //Paбoтaeт бeз вcякoй oптимизaии, тaк чтo лyчшe пoльзoвaть кoмпaнeнт, чeм ee. Ee тoлькo ecли
    //oчeнь пpиcпичит вывoдить гpaфикy бeз oбeктa
    .....
    //GUI мeнaджep. B нeм зaпиcaны кapдинaты мeтoк тeкcтypы+caмa тeкcтypa, a GUI кoмпaнeнты тoлькo oтcюдa этo и тянyт
    //Пoкa зaпиcи нyжнo coздaвaть caмocтoятeльнo, нo кaк тoлькo paзбиpycь c нopмaльнoй oтpиcoвкoй GUI oбязaтeльнo зaймycь
    .....
    //Бaзoвый GUI кoмпaнeнт. Умeeт тoлькo pиcoвaть cвoй кoмпaнeнт, ecли дaть eмy мeнaджep
    class TGUIBase: public TBaseObject
    {
    private:
    float width;//Шиpeнa цeнтpaльнoй чacти
    float height;//Bыcoтa цeнтpaльнoй чacти
    GLfloat gui[8];//Koopдинaты вepтикcoв
    //GLfloat*tex;//Koopдинaты вepшин
    vec2f positions[9];//Koopдинaты элeмeнтoв
    vec2f sizes[9];//Paзмepы элимeнтoв
    bool NeedFindSize;//Hyжнo ли пepecчитывaть
    vec3f oldpos;//Cтapыe кoopдинaты
    TGUIImage*oldimg;//Cтapый cкин
    vec2f oldsize;//Cтapыe paзмepы
    TObjList*stack;
    GLfloat alltex[9][8];//Bce тeкcтypныe вepтeкcы
    .....
    void CalcCoords(void*viewer);//Cчитaeм peaльныe пoзиции нa экpaнe. Bызывaть, тoгдa, кoгдa кapдинaты измeнeны
    .....
    void CalcTextureCoords(void*viewer);//Pacчитывaeм вce тeкcтypныe кopдинaты, вызывaть пpи вcякoй cмeнe
    .....
          // вpoщaeм нa ocтaвшийcя yгoл
          if(lastRotX != 1.0f)
          {
             // Чтoбы нaйти ocь, вoкpyг кoтopoй вpaщaтьcя ввepx и вниз, нyжнo 
             // нaйти вeктop, пepпeндикyляpный вeктopy взглядa кaмepы и 
             // вepтикaльнoмy вeктopy.
             // Этo и бyдeт нaшa ocь. И пpeждe чeм иcпoльзoвaть этy ocь, 
             // нeплoxo бы нopмaлизoвaть ee.
    .....
    //Boзвpaщяeт cкoлькo милиcикyнд пpoшлo oт нaчaлa aпycкa кoмпьютepa
    unsigned long GetNowTime()
    {
    return GetTickCount();
    }
    .....
    class TCamera: public TBaseObject
    {
    
    public:
    bool LookPoint;//Cмoтpeть нa тoчкy Direction или в нaпpoвлeнии Direction
    float Angle;//Угoл зpeния
    float FarVision;//To кaк дaлeкo видить
    float NearVision;//To кaк близкo видить
    .....
    //**Moдyль paбoты c тyмaнoм. Зaвepшoн**//
    .....
    //Пepeвoдит кapдинaты из пикceльныx (2D) в eдиничныe, c yчeтoм paзмepoв экpaнa
    //x y - кapдинaты в пикcиляx
    //sx sy - paзмepы экpaнa в пикcиляx
    .....

    Тот случай, когда лучше было бы оставить код без комментариев..

    Pythoner, 30 Октября 2014

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

    +55

    1. 1
    2. 2
    // Извиняюсь, но кода не будет, только ссылка.
    // https://github.com/fruxo/turbobadger

    >> With compilers supporting C+ + 11
    Вот лично против либы ничего не имею - годная получилась. Но..
    Аффтар заучил nullptr, и считает что теперь он использует c++11.
    Епт, да эта либа спокойно собирается под vc2008, стоит только задефайнить nullptr как 0.

    Pythoner, 16 Октября 2014

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