1. PHP / Говнокод #28336

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    /**
         * @param string $login
         * @return User
         * @throws GuzzleException
         */
        public function getExternalUser(string $login):FreeIpaUser{
            return $this->UserFactory->createUser($login,$this->getUser($login));
        }

    1g0rbm, 16 Августа 2022

    Комментарии (4)
  2. Куча / Говнокод #28330

    −5

    1. 1
    Борманд! Ты вернулся!

    kcalbCube, 11 Августа 2022

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

    0

    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
    public static void Mein()
    	{
    		Govno8_Main.random_0 = new Random();
    		Govno8_Main.doubleBufferForm_0 = new Govno8.DoubleBufferForm();
    		Govno8_Main.byte_0 = ArrayModule.Create<byte>(4096, 0);
    		Govno8_Main.ushort_0 = 512;
    		Govno8_Main.string_0 = string.Empty;
    		Govno8_Main.openFileDialog_0 = new OpenFileDialog();
    		Govno8.OpenBinDialog.Title = "Open Chip-8 ROM File";
    		Govno8.OpenBinDialog.Filter = "Chip-8 ROM Files|*.ch8|All files|*.*";
    		switch (Govno8.OpenBinDialog.ShowDialog())
    		{
    			case DialogResult.OK:
    				{
    					byte[] array = File.ReadAllBytes(Govno8.OpenBinDialog.FileName);
    					if (array.Length != 0 && array.Length <= 3583)
    					{
    						Govno8.RomName = Govno8.OpenBinDialog.FileName;
    						array.CopyTo(Govno8.Memory, (int)Govno8.PC);
    					}
    					else
    					{
    						MessageBox.Show("Invalid ROM file", "FATAL ERROR", MessageBoxButtons.OK, MessageBoxIcon.Hand);
    						Environment.Exit(1);
    					}
    					break;
    				}
    			default:
    				Environment.Exit(1);
    				break;
    		}
    		Govno8_Main.byte_1 = new byte[]
    		{
    				240, 144, 144, 144, 240, 32, 96, 32, 32, 112,
    				240, 16, 240, 128, 240, 240, 16, 240, 16, 240,
    				144, 144, 240, 16, 16, 240, 128, 240, 16, 240,
    				240, 128, 240, 144, 240, 240, 16, 32, 64, 64,
    				240, 144, 240, 144, 240, 240, 144, 240, 16, 240,
    				240, 144, 240, 144, 144, 224, 144, 224, 144, 224,
    				240, 128, 128, 128, 240, 224, 144, 144, 144, 224,
    				240, 128, 240, 128, 240, 240, 128, 240, 128, 128
    		};
    		Govno8.Fontset.CopyTo(Govno8.Memory, 0);
    		Govno8_Main.ushort_1 = 0;
    		Govno8_Main.byte_2 = ArrayModule.Create<byte>(16, 0);
    		Govno8_Main.ushort_2 = 0;
    		Govno8_Main.ushort_3 = ArrayModule.Create<ushort>(16, 0);
    		Govno8_Main.ushort_4 = 0;
    		Govno8_Main.byte_3 = ArrayModule.Create<byte>(16, 0);
    		Govno8_Main.byte_4 = ArrayModule.Create<byte>(2048, 0);
    		Govno8_Main.byte_5 = 0;
    		Govno8_Main.byte_6 = 0;
    		Govno8_Main.dateTime_0 = DateTime.Now;
    		Govno8_Main.dateTime_1 = DateTime.Now;
    		Govno8_Main.fsharpAsync_0 = ExtraTopLevelOperators.DefaultAsyncBuilder.Delay<Unit>(Govno8.Class6.class6_0);
    		Govno8.Form.ClientSize = new Size(1024, 512);
    		CommonExtensions.AddToObservable<EventArgs>(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.CreateEvent<EventHandler, EventArgs>(Govno8.Class7.class7_0, Govno8.Class8.class8_0, Govno8.Class10.class10_0), Govno8.Class11.class11_0);
    		CommonExtensions.AddToObservable<PaintEventArgs>(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.CreateEvent<PaintEventHandler, PaintEventArgs>(Govno8.Class12.class12_0, Govno8.Class13.class13_0, Govno8.Class15.class15_0), Govno8.Class16.class16_0);
    		CommonExtensions.AddToObservable<KeyEventArgs>(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.CreateEvent<KeyEventHandler, KeyEventArgs>(Govno8.Class17.class17_0, Govno8.Class18.class18_0, Govno8.Class20.class20_0), Govno8.Class21.class21_0);
    		CommonExtensions.AddToObservable<KeyEventArgs>(Microsoft.FSharp.Core.CompilerServices.RuntimeHelpers.CreateEvent<KeyEventHandler, KeyEventArgs>(Govno8.Class22.class22_0, Govno8.Class23.class23_0, Govno8.Class25.class25_0), Govno8.Class26.class26_0);
    		Govno8.Form.Text = string.Format("{0} - Chip-F Emulator", Govno8.RomName);
    		Govno8.Form.MaximizeBox = false;
    		Govno8.Form.FormBorderStyle = FormBorderStyle.FixedSingle;
    		Application.Run(Govno8.Form);
    	}

    Три раза переваренный кал...
    Скомпилен F# код, затем декомпиленный в C# и подправленный чутка)))
    А, ну и ещё деобфускатором прошелся прикола ради, перед декомпиляцией.

    P.S. Кстати капча ниже содержала 666... Как иронично...

    DartPower, 10 Августа 2022

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

    +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
    #include <stddef.h>
    #include <stdio.h>
    #include <utility>
    #define PLACEHOLDER char x[0];
    
    #define FORCEINLINE 
    template <typename T, typename... Ts> struct MyTuple : MyTuple<Ts...>
    {
    	FORCEINLINE constexpr MyTuple(T&& t, Ts&&... ts)
    		: value(std::move(t))
    		, MyTuple<Ts...> (std::forward<Ts>(ts)...){}
    	FORCEINLINE explicit MyTuple(const MyTuple<T,Ts...> &other) = default;
    	FORCEINLINE MyTuple(MyTuple<T,Ts...> &&other)
    		: MyTuple<Ts...>(std::forward<MyTuple<Ts...>>(other)),
    		value(std::move(other.value)){}
    
    	FORCEINLINE constexpr int size() const { return 1 + MyTuple<Ts...>::size(); }
    	constexpr static int sz = 1 + MyTuple<Ts...>::sz;
    	FORCEINLINE MyTuple<Ts...> &next(){return *static_cast<MyTuple<Ts...>*>(this);}
    	using tnext = MyTuple<Ts...>;
    	T value;
    	FORCEINLINE ~MyTuple() {}
    	constexpr static bool isitem = false;
    };
    struct MyTupleEmpty
    {
    	PLACEHOLDER
    	FORCEINLINE constexpr int size() const { return 0; }
    	static constexpr int sz = 0;
    	~MyTupleEmpty() {}
    	constexpr static bool isitem = false;
    };
    
    template <typename T> struct MyTuple<T> {
    	FORCEINLINE MyTuple(T&& t) : value(std::move(t)){}
    	FORCEINLINE explicit MyTuple(const MyTuple<T> &other) = default;
    	FORCEINLINE MyTuple(MyTuple<T> &&other): value(std::move(other.value)){}
    
    	FORCEINLINE MyTupleEmpty &next() const{
    		static MyTupleEmpty empty;
    		return empty;
    	}
    	FORCEINLINE constexpr int size() const { return 1; }
    	constexpr static int sz = 1;
    	using tnext =MyTupleEmpty;
    	T value;
    	FORCEINLINE ~MyTuple() {}
    	constexpr static bool isitem = false;
    };
    template <class T>struct unwrap_refwrapper{using type = T;};
    template <class T>struct unwrap_refwrapper<std::reference_wrapper<T>>{using type = T&;};
     template <class T> using unwrap_decay_t = typename unwrap_refwrapper<typename std::decay<T>::type>::type;
    template<typename... Ts>
    static FORCEINLINE MyTuple<unwrap_decay_t<Ts>...> MakeTuple(Ts&&... args)
    {
    	return MyTuple<unwrap_decay_t<Ts>...>(std::forward<Ts>(args)...);
    }
    struct i3{
        auto setProp(auto x, i3 t = *(i3*)0)
        {
            typename decltype(x(*this))::tp c;
            return c;
        }
        using tp = i3;
    };
    
    
    #define s(x,y) setProp([](auto c){struct xxx: decltype(c)::tp{decltype(y) x = y;using tp = xxx;    decltype([] (auto xx, xxx &t = *(xxx*)0)\
        {\
            typename decltype(xx(t))::tp c;\
            return c;\
        }) setProp;auto BeginChildren(){return *this;}} d;return d;})
    
    #define c(...) BeginChildren(),MakeTuple(__VA_ARGS__)
    #define i(...) i3()
    
    
    
    
    void func2()
    {
        auto tp = MakeTuple(
        i(Window)
            .s(width,10)
            .s(height,20)
            .c(
                i(Item),
                i(Item2)
                    .s(property1,10.0f)
    
            )
        );
        printf("%d %d %f\n",tp.value.height,tp.value.width, tp.next().value.next().value.property1);
    }
    
    int main()
    {
        func2();
    }

    qml-like структура в compile time
    Стандартизаторы всё пытались запретить шаблоны в локальных классах, да не вышло - понаоставляли дыр в лямбдах и decltype.
    Если добавить -fpermissive, то gcc сожрёт даже с constexpr

    mittorn, 09 Августа 2022

    Комментарии (19)
  5. Си / Говнокод #28325

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    unsigned mul(unsigned a, unsigned b)
    {
     char arr[a][b];
     return &arr[a][b] - (char *)arr;
    }

    Умножение через VLA

    j123123, 09 Августа 2022

    Комментарии (59)
  6. Куча / Говнокод #28323

    +1

    1. 1
    Из-за тебя ушел я, %username%!

    Ня, пока.

    hormand, 08 Августа 2022

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

    +5

    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
    // Heap memory allocate function (must not be used!)
    caddr_t _sbrk(int incr) {
        <...>
        void some_bastard_called_sbrk();
        some_bastard_called_sbrk(); // Produce linker error in case it is used
    }
    
    _ATTRIBUTE ((__format__ (__printf__, 1, 2)))
    int	printf (const char *__restrict format, ...)
    {
        <маленький трехколесный велосипед>
    }
    
    int	putchar(int c) 
    {
        <...> 
    }
    int	puts(const char *s) 
    {
        <...> 
    }
    
    _ATTRIBUTE ((__format__ (__printf__, 2, 3)))
    int	sprintf (char *__restrict s, const char *__restrict format, ...)
    {
        <...> 
    }

    STM32. Я просто хочу использовать printf для вывода в последовательный порт и не течь. Ведь для этого нужно только реализовать int _write(int file, char *data, int len) и всё. Ой, а почему иногда программа падает где-то в кишках рантайма?

    Может, стек переполняется? Да нет, проверил, значения в норме...

    Просто стандартная библиотека от ST - это не курсовая ардуинщика, тут все системно, хендлы потоков, дескрипторы устройств и управляющие структуры. При первом обращении printf (и sprintf тоже!) выделяет себе в куче около 400 байт. Замечательное решение, помогающее сэкономить память, если мы не используем стандартный вывод! А куча тут - это просто последовательно заполняемая область памяти, размеры которой задаются в linker script (я вообще 0 указал, я ведь не использую malloc). Проверять выход за пределы кучи мы, конечно, не будем - зачем, когда рядом такая замечательная, никому не нужная область стека.
    Да, и если забыть отключить буферизацию setvbuf(stdin/stdout/stderr, NULL, _IONBF, 0); , то он выделит не 400 байт, а килобайт (на контроллере с 8K RAM).

    В общем, ах, оставьте меня, сам все напишу.
    Только надо еще putchar и puts реализовать, а то компилятор любит printf'ы оптимизировать. И не забыть, что puts добавляет перевод строки. Уф, вроде все.

    Steve_Brown, 05 Августа 2022

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

    −1

    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
    AnsiString str = IntToHex((__int64) longvalue, 2); // 0x01020304
    
        char _c[11];
        char *ch = str.c_str();
        int len = strlen(ch);
        int _s = len;
        int j = 0;
        _c[j++] = '0';
        _c[j++] = 'x';
        while (_s >= 2) {
            _c[j++] = ch[_s-2];
            _c[j++] = ch[_s-1];
            _s-=2;
        }
        if (len == 7) {
            _c[j++] = '0';
            _c[j] = ch[0];
        }
        _c[10] = '\0';
    
        unsigned long pp;
        char *pEnd;
        pp = strtoul (_c, &pEnd, 16); // 0x04030201 - PROFIT!

    Наслаждайтесь

    FataLL, 05 Августа 2022

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

    +3

    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
    AnsiString Cut_the_path(AnsiString ExeName)
    {
        AnsiString Path = ExeName;
        char *cp = Path.c_str(); int last = Path.Length()-1;
        int i=last;
        for(; i>=0; i--)
        {
            if( *(cp+i) == '\\' )
                break;
            Path.Delete(Path.Length(),1);
        }
        return Path;
    }

    FataLL, 04 Августа 2022

    Комментарии (151)
  10. Assembler / Говнокод #28317

    −3

    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
    ORG $4000
    A1=#3C
    A2=#3E
    A4=$42
    AUXMOVE=$C3111
    SETUP LDA #<VTOC
    STA A1
    LDA #>VTOC
    STA A1+1
    LDA #<END
    STA A2
    LDA #>END
    STA A2+1
    LDA #$B0
    STA A4
    LDA #$B0
    STA A4
    SEC
    JMP AUXMOVE
    DS 4

    Тому, кто скажет, что это и откуда - ничего.

    bormanb, 04 Августа 2022

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