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

    Всего: 94

  2. Куча / Говнокод #27243

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    impl Drop for FileDesc {
        fn drop(&mut self) {
            // Note that errors are ignored when closing a file descriptor. The
            // reason for this is that if an error occurs we don't actually know if
            // the file descriptor was closed or not, and if we retried (for
            // something like EINTR), we might close another valid file descriptor
            // opened after we closed ours.
            let _ = unsafe { libc::close(self.fd) };
        }
    }

    https://github.com/rust-lang/rust/blob/master/library/std/src/sys/unix/fd.rs#L294
    Похуй на ошибки возврата, да? Ведь из деструктора вернуть код ошибки нельзя, а исключения... А, это ж Раст, хуй с ними с исключениями короче.
    Для ШЫНДОШЫ такая же хуйня, но тут они даже камент написать постыдились: https://github.com/rust-lang/rust/blob/master/library/std/src/sys/windows/handle.rs#L54

    Вручную скинуть буфер на диск - тоже нечем, потому что функция, которой я пользовался в сишке, тут бесполезна:
    https://github.com/rust-lang/rust/blob/master/library/std/src/sys/unix/fs.rs#L861
    https://github.com/rust-lang/rust/blob/master/library/std/src/sys/windows/fs.rs#L438

    Короче, мне тут продакшон код надо писать за зарплату, а я не знаю, как вернуть юзеру информацию о неудачном закрытии. Что делать-тоа?!

    TarasB, 09 Февраля 2021

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

    −49

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    int iStartX = max(0, -padL);
      int iStartY = max(0, -padT);
      int oStartX = max(0, padL);
      int oStartY = max(0, padT);
    
      int inputPointX = min(max(padL, outputPointX), input.getSize(3) + padL - 1) - oStartX + iStartX;
      int inputPointY = min(max(padT, outputPointY), input.getSize(2) + padT - 1) - oStartY + iStartY;

    Я правильно упростил эту хрень?
    int inputPointX = min(max(0, outputPointX), input.getSize(3) - 1) - oStartX + iStartX;
    int inputPointY = min(max(0, outputPointY), input.getSize(2)- 1) - oStartY + iStartY;

    TarasB, 09 Сентября 2016

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

    +3

    1. 1
    Point3D& operator /= (const float f) { x/=f; y/=f; z/=f; return *this; }

    ебать я лох

    TarasB, 06 Июля 2016

    Комментарии (44)
  5. Куча / Говнокод #19983

    0

    1. 1
    Тарас с сайта ebanoe.it это не я

    TarasB, 11 Мая 2016

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

    −50

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    static int PC=0;
      ++PC;
    
      if (PC==1331) {
        PC=1331;
      }

    Часто так делаю. Надо.

    TarasB, 25 Марта 2016

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

    −46

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

    смотреть на 28й секунде в высоком качестве
    (да, я передаю функтор по ссылке с контекстом)

    TarasB, 14 Января 2016

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

    +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
    /***
    *assert.h - define the assert macro
    *
    *       Copyright (c) Microsoft Corporation. All rights reserved.
    *
    *Purpose:
    *       Defines the assert(exp) macro.
    *       [ANSI/System V]
    *
    *       [Public]
    *
    ****/
    
    
    /*
    #include <crtdefs.h>
    
    #undef  assert
    
    #ifdef  NDEBUG
    
    #define assert(_Expression)     ((void)0)
    
    #else
    
    #ifdef  __cplusplus
    extern "C" {
    #endif
    
    _CRTIMP void __cdecl _wassert(_In_z_ const wchar_t * _Message, _In_z_ const wchar_t *_File, _In_ unsigned _Line);
    
    #ifdef  __cplusplus
    }
    #endif
    
    #define assert(_Expression) (void)( (!!(_Expression)) || (_wassert(_CRT_WIDE(#_Expression), _CRT_WIDE(__FILE__), __LINE__), 0) )
    
    #endif   */
    
    #pragma once
    #ifdef NDEBUG
    #define assert(expr)
    #else
    inline void CheckExpression_(bool expr)
    {
    	if (!expr)
    	{
    		expr=true; // put breakpoint here, happy user;
    		CheckExpression_(expr);
    	}
    }
    
    inline void CheckExpression_(void* expr)
    {
    	if (!expr)
    	{
    		expr=(void*)(1); // put breakpoint here, happy user;
    		CheckExpression_(expr);
    	}
    }
    
    #define assert(expr) CheckExpression_(expr);
    #endif

    Сука я не знаю, почему в студии-2008 родной ассерт показывает не ту строку, на которой он произошёл и в стеке вызовов хуйня какая-то, и как подключить DebugBreak я тоже не знаю, потому что в windef.h куча хуеты, выдающей 100500 ошибок компиляции. Чтобы хоть как-то можно было жить, пришлось сделать так.

    TarasB, 13 Января 2016

    Комментарии (56)
  9. Куча / Говнокод #18579

    +7

    1. 1
    assert(False, "todo");

    TarasB, 05 Августа 2015

    Комментарии (20)
  10. Pascal / Говнокод #17759

    +94

    1. 1
    2. 2
    SetLength(kokoko, Length(kokoko)+1);
    kokoko[Length(kokoko)-1] := Something;

    БЕСИТ

    TarasB, 10 Марта 2015

    Комментарии (69)
  11. Assembler / Говнокод #17584

    +135

    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
    descriptions[result].Append(tblib::Format("%").i(0x12345678, 0xBB));
    
    
    0040E729  push        0BBh 
    0040E72E  push        12345678h                                                                ; ага, запихали параметры для Format::i, заебись; теперь esp=0x0012f1f4
    0040E733  lea         eax,[esp+38h] 
    0040E737  push        eax                                                                      ; esp=0x0012f1f0
    0040E738  lea         ecx,[esp+1Ch] 
    0040E73C  mov         dword ptr [esp+3Ch],offset USER32_NULL_THUNK_DATA+40h (43C1A8h) 
    0040E744  mov         dword ptr [esp+40h],ebp 
    0040E748  mov         dword ptr [esp+44h],1 
    0040E750  call        tblib::HeapCArray<char>::HeapCArray<char><tblib::StringRef> (4161B0h)    ; esp=0x0012f1f4
    0040E755  push        400h                                                                     ; esp=0x0012f1f0
    0040E75A  mov         ecx,offset tbAlloc (18B0C88h) 
    0040E75F  mov         dword ptr [esp+2Ch],ebp 
    0040E763  mov         dword ptr [esp+28h],ebp 
    0040E767  mov         dword ptr [esp+24h],ebp 
    0040E76B  call        tblib::Allocator::Malloc (42C500h)                                       ; esp=0x0012f1f4
    0040E770  mov         dword ptr [esp+20h],eax 
    0040E774  neg         eax  
    0040E776  sbb         eax,eax 
    0040E778  and         eax,400h 
    0040E77D  lea         ecx,[esp+18h] 
    0040E781  mov         dword ptr [esp+24h],eax 
    0040E785  mov         dword ptr [esp+2Ch],0FFFFFFFFh 
    0040E78D  call        tblib::Format::PassToNext (41BC00h)            ; хуй знает почему, но после этой функции esp не меняется, конвенция такая видимо
    0040E792  sub         esp,0Ch                                        ; БЛЯДЬ СУКА НАХУЙ ЁБАНЫЙ ПИЗДЕЦ ТЫ ЧЁ СУКА ТВОРИШЬ ААААААААА!!!!!!!!!!!!!!!!!!!!!!!!
    0040E795  lea         ecx,[esp+24h] 
    0040E799  mov         edi,esp 
    0040E79B  call        tblib::Format::i (42DBA0h)                     ; esp=0x0012f1e8, указывает на мусор, параметры для функции - где-то выше
    ...

    MSVC 2003 релиз

    TarasB, 05 Февраля 2015

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