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

    +60.9

    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
    #if 0
      n = NPN_GetStringIdentifier("prompt");
    
      NPVariant vars[3];
      STRINGZ_TO_NPVARIANT("foo", vars[0]);
      STRINGZ_TO_NPVARIANT("bar", vars[1]);
      STRINGZ_TO_NPVARIANT("foof", vars[2]);
      NPN_Invoke(sWindowObj, n, vars, 3, &rval);
      if (NPVARIANT_IS_STRING(rval)) {
       printf ("prompt returned '%s'\n", NPVARIANT_TO_STRING(rval).utf8characters);
      }
    
       NPN_ReleaseVariantValue(&rval);
    #endif

    и это официальный пример написания плагина с сайта Mozilla
    пруф линк - http://mxr.mozilla.org/seamonkey/source/modules/plugin/samples/npruntime/plugin.cpp - строка 564

    Coach, 13 Ноября 2009

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

    +73.2

    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
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    /*
        CANON D-SLR cameras core routine
        Property of CANON INC. 1998-2010
        
        v 1.0 made by Radja Tokamoto Goines
        v 1.1 made by Dugwin Yakioto jr.
        
        last changes: 10.11.2009
    */
    
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    
    #include "inc/tweakfocus.h"
    #include "inc/radja_filters.h"
    
    bool do_focus(lens, camera) {
        double fp;
        time_t t;
    
        t = init_focus_timer(t);
        
        do {
            fp = measure_focus_point(lens);
            move_focus(lens, fp)
    
            if (timeout(t))
                return false;
    
        } while (!lens.is_focused());
        
        if (!L_LensDetected(lens))
            lens.adjust_focus(rand(10));
            
        return true;
    }
    
    rawdata * scandata(matrix, lens, camera) {
        rawdata *cr;
        double noise, aberrations;
    
        cr = create_cr(matrix);
        
        read_exif_info(cr->exif, lens, camera);
    
        prepare_everything(matrix, lens, camera);
        
        if (!do_focus(lens, camera))
            return NULL;
        else 
            beep();
          
        aberrations = pow(100 - lens.focallength, 2) * sqrt(2) + 10;
    
        if (L_LensDetected(lens))
            aberrations /= 2.0;
          
        scan_sensor(cr, matrix, aberrations);
    
        noise = matrix.iso / 100.0;
        noise *= matrix.cropfactor;
    
        if (camera.model == EOS1000D) {
            noise *= 1.2;
            wait_for_something();
        }
    
        if (camera.model != EOS7D)
            wait_for_something();
        
        if (lens.manufacture != CANON_LENS) {
            corrupt_something(cr);
            apply_random_filter(cr);
        }
        
        if (lens.model == EF_50_F1_4) {
            noise /= 1.2;
            apply_fcb(cr); //fucken cool bokeh
        }
        
        if (lens.model == CANON_L_17_40_F4) {
            blur(cr, 0.8);
            distort(cr, 40 - lens.focallength);
        }
          
        radja_filter(cr, 1.570796326794896619231321691641); //don't touch that!
    
        if (is_eos1d_series(camera.model))
            disable_all_spoiling(cr);
        else
            make_nice_colors(cr);
        // finally...
        apply_noise(cr, noise);    
        apply_barrel_distortion(cr, lens);
        apply_pillow_distortion(cr, lens);  
        
        return cr;
    }

    http://habrahabr.ru/blogs/DSLR/74958/
    Исходные тексты прошивки canon eos.
    Многие, наверное, уже слышали, что на днях была взломана внутренняя сеть компании Canon и в числе прочего в сеть «утёк» кусок ядра исходных текстов прошивки камер серии EOS, который я имею честь эксклюзивно опубликовать на суд общественности.
    Говночитатели без ЧЮ идут в *опу.

    sbb, 11 Ноября 2009

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

    +68.4

    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
    char rc;
    ...
    bool ResourceManager()
    {
    	static TResourceRC r;
    	...
    	delete r;
    	...
    	r=new TResourceRC(rc);
    	...
    	return true;
    	assert(false);
    };
    ...

    От предков проект достался. Я думал, чего он переодически необьяснимо глючит...
    ResourceManager() - вызываеться регулярно в цикле.

    Говногость, 11 Ноября 2009

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

    +73.7

    1. 1
    2. 2
    3. 3
    #include <math.h>
     ...
    result = (thisCos ? cos : sin)(3.140);

    Знакомый программист прислал из своего проекта.

    Говногость, 10 Ноября 2009

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

    +65.9

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    //какой-то .h-файл
    namespace Error {
    	struct Put_error{
    		const char * Message;
    		Put_error(const char * e) { Message = e; }
    	};
    ...
    
    //в каком-то методе в другом файле
    	  string msg = "Error: cannot open input file " + string(fileInputName) + "\n";
    	  throw Error::Put_error(msg.c_str());

    Lexey, 03 Ноября 2009

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

    +69.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    vector<int> :: iterator itBegins = array.begin(); 
    vector<int> :: iterator itEnds = array.end();
    
    while(itBegins != itEnds)
    {
             pVec.pop_back();
             it++;
    }

    Сей артефакт остался в коде ввиду лености переписывать его в 100 файлах сразу после удаления того, ради чего собственно затевался while(!pVec.empty()) ... прямо скажем - отлов ЭТОГО занял немало времени и нервов... тк на первый взгляд оно должно... а что ты видишь в этом коде, %юзернейм% ?

    (исправленная версия XD )

    Zeks, 02 Ноября 2009

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

    +48.5

    1. 1
    2. 2
    3. 3
    4. 4
    while(!pVec.empty())
    {
             pVec.pop_back();
    }

    Сей артефакт остался в коде ввиду лености переписывать его в 100 файлах сразу после удаления того, ради чего собственно затевался while(!pVec.empty()) ... прямо скажем - отлов ЭТОГО занял немало времени и нервов... тк на первый взгляд оно должно... а что ты видишь в этом коде, %юзернейм% ?

    Zeks, 02 Ноября 2009

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

    +50.7

    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
    namespace inter {
        template<typename X>
        struct tplClass {
            private:
                X _priv;
            
            public:
                tplClass(const X _generator) {
                    this->_priv = _generator;
                    return;
                }
                
                tplClass(const tplClass<int>& _a) {
                    this->_priv = _a.get();
                    return;
                }
    
                const X get(void) const {
                    return this->_priv;
                }
        };
        
        
        template<typename X>        
        const tplClass<X> operator+(const tplClass<X>& _lha, const tplClass<X>& _rha) {
            return tplClass<X>(_lha.get()+_rha.get());
        }
    }
    
    int main(int argc, char* args[], char* envs[]) {
        tplClass<int> a(5);
        tplClass<double> b(3.1);
        tplClass<double> c = a + b;
        return 0;
    }

    1. Всё упрощено до невозможности. Описано только то, что необходимо для узрения говнокода.
    2. Несмотря на то, что решение существует в очень известной книжке, я напоролся на говнокод лично, пока программу писал. Искал несколько дней проблему... Ну да... Бывает...
    3. Говнокод заключается в том, что данный код не компилируется.

    P.S. Если видите, что где-то есть дыра, то говорите, возможно я опечатался (злобная администрация исправить не даст), возможно в данном коде плюг опущен, возможно дыра у меня в голове. Конструктивная критика приветствуется.

    P.P.S. Если вы решили просто написать, что (C++ == "говно") is true , то, пожалуйста, прошу вас как людей порядочных и воспитанных, имеющих совесть и ум, пройдите мимо. Если у вас нит ни ума, ни совести, ни порядочности, то можете писать про "естественную говнистость" C++, милости прошу.

    interested, 30 Октября 2009

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

    +66.8

    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
    // Найдено глубоко в продакшн-коде некоего транслятора:
    HRESULT hr = S_OK;
    try {
          hr = ParseSection(sourceTemplate, output, CS_IF);
    }
    CATCH_CG_EXCEPTION(this, hr)
    CATCH_CG_EXCEPTION_END
    
    // далее смотрим определения этих чудо-макросов
    #define CATCH_CG_EXCEPTION(gen, hr) \
    catch (CHierCGException* e)  { \
         (gen)->WriteExceptionMessage(e); \
         if (e->m_bContinue) { \
                if (e->m_useHRESULT) hr = e->m_hResult; else hr = E_FAIL; \
         } \
         delete e; \
         if (!(e->m_bContinue))
    
    #define CATCH_CG_EXCEPTION_END \
          throw; \
    }

    Исключительно говнистая обработка исключений :-)

    Orfest, 27 Октября 2009

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

    +68

    1. 1
    2. 2
    char *GetNumRenderedObjectsString() { char *mString = new char [128]; itoa (mNumRenderedObjects, mString, 10); return mString; };
    char *GetNumDiscardedObjectsString() { char *mString = new char [128]; itoa (mNumDiscardedObjects, mString, 10); return mString; };

    Отличная работа с памятью.

    benin, 25 Октября 2009

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