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

    +178

    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
    static long get_ver(unsigned short *src, unsigned char *dst)
    {
    	u8 tmp_buf[16];
    	s32 i = 0;
    
    	while(1)
    	{
    		if(dst[i] < '0' ||  dst[i] > '9')
    			break;
    
    		tmp_buf[i] = dst[i] % 0x30;
    		i++;
    	}
    
    	if(i == 1)
    		*src = tmp_buf[0];
    	else if(i == 2)
    		*src = (tmp_buf[0] * 10) + tmp_buf[1];
    	else if(i == 3)
    		*src = (tmp_buf[0] * 100) + (tmp_buf[1] * 10) + tmp_buf[2];
    	else if(i == 4)
    		*src = (tmp_buf[0] * 1000) + (tmp_buf[1] * 100) + (tmp_buf[2] * 10) + tmp_buf[3];
    
    	return i;
    }

    Функция читает из dst и пишет в src O_O

    Запостил: mors, 28 Сентября 2011

    Комментарии (17) RSS

    • Опасная функция.
      Ответить
    • > unsigned short *src
      это как? я че т не врублюсь в идею. unsigned char *dst - понятно, строка.
      Ответить
      • Указатель на беззнаковое короткое целое. Что тут может быть не понятно?
        Ответить
    • >Функция читает из dst и пишет в src O_O
      Плюёт против ветра?
      Ответить
    • > dst[i] % 0x30
      Гениальная нормализация.
      Ответить
    • Лесенка из if ( i == ... ) особо радует
      Так же у автора прослеживается тенденция сокращать имена до 3 букв, ему явно не за количество строк платят
      Ответить
    • Смущают разные названия типов: u8 и unsigned char, s32 и long.
      Да, и если в dst (который должен быть src) больше 16 циферных символов, то насрем в память.
      Хотя, судя по if'ам, автор рассчитывает, что их там не больше 4х.
      Ответить
    • Откуда читает и куда пишет должно быть видно не [только] по именам аргументов, но и наличия const в их типах.
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий