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

    Всего: 3

  2. SQL / Говнокод #6074

    −860

    1. 1
    2. 2
    3. 3
    4. 4
    update dv_main set dv_main.tp_id = 2 where dv_main.uid in
    (SELECT dv.uid FROM (select * from dv_main) as dv
    LEFT JOIN users u ON (u.uid = dv.uid)
    WHERE dv.tp_id = 1);

    Вот так вот саппорт одного биллинга посоветовал массово сменить тарифный план пользователям...

    NiTr0man, 23 Марта 2011

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

    +136

    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
    static int getDns(int eid, webs_t wp, int argc, char_t **argv)
    {
            //....тут были еще переменные...
            int type, idx = 0, req = 0;
    
            if (ejArgs(argc, argv, T("%d"), &type) == 1) {
                    if (1 == type)
                            req = 1;
                    else if (2 == type)
                            req = 2;
                    else
                            return websWrite(wp, T(""));
            }
            //...дальше операции с req...
    }

    Такой вот китайский код демона goahead, пользуемого в embedded железяках...

    NiTr0man, 19 Февраля 2011

    Комментарии (10)
  4. Си / Говнокод #5069

    +141

    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
    char *nvram_get(int index, char *name)
    {
            /* Initial value should be NULL */
            char *recv = NULL;
    
            //LIBNV_PRINT("--> nvram_get\n");
            nvram_init(index);
    
            recv = nvram_bufget(index, name);
    
            //btw, we don't return NULL anymore!
            if (!recv)
                recv = "";
    
            //Always need close nvram
            nvram_close(index);
    
        return recv;
    }
    
    char *nvram_bufget(int index, char *name)
    {
            int idx;
            /* Initial value should be NULL */
            static char *ret = NULL;
    
            //LIBNV_PRINT("--> nvram_bufget %d\n", index);
            LIBNV_CHECK_INDEX("");
            LIBNV_CHECK_VALID();
            idx = cache_idx(index, name);
    
            if (-1 != idx) {
                    if (fb[index].cache[idx].value) {
                            //duplicate the value in case caller modify it
                            //Tom.Hung 2010-5-7, strdup() will cause memory leakage
                            //but if we return value directly, it will cause many other crash or delete value to nvram error.
                            ret = strdup(fb[index].cache[idx].value);
                            LIBNV_PRINT("bufget %d '%s'->'%s'\n", index, name, ret);
    
                            //btw, we don't return NULL anymore!
                            if (!ret)
                                ret = "";
    
                        return ret;
                    }
            }
    
            //no default value set?
            //btw, we don't return NULL anymore!
            LIBNV_PRINT("bufget %d '%s'->''(empty) Warning!\n", index, name);
            return "";
    }

    Кусочек кода из библиотеки работы с nvram для железок на SoC Ralink. Китайцы плакали, кололись о утечки памяти, но продолжали настойчиво мешать указатели на статические строки с указателями на динамически выделенные в куче...

    NiTr0man, 27 Декабря 2010

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