[devel] [git update] packages/katrin: heads/master

Денис Смирнов =?iso-8859-1?q?mithraen_=CE=C1_altlinux=2Eru?=
Сб Июн 23 18:40:46 MSD 2007


On Thu, Jun 21, 2007 at 07:15:03PM +0700, Slava Semushin wrote:
>> diff --git a/src/tc/katrin-tc.c b/src/tc/katrin-tc.c
>> +if (argv[1]!=NULL && (strcmp(argv[1],"remove")==0 || strcmp(argv[1],"reload")==0))
>> +{
>> +       char *iface = strdup("eth0");
>> +       char *allrate = strdup("100mbit");
SS> strdup() выделяет новую память с помощью malloc(). Это значит, что её
SS> можно (и нужно) освободить во избежание утечек.

Добавлю, что если строки столь небольшие, то возможно имеет смысл
использовать strdupa. Хотя не читая кода далее мне непонятно в связи с чем
используется подобное, вместо указателя на константу.

>> +       //open tmp script file
>> +       char prog[] = "/tmp/katrin-tc-tmp";
>> +       char path[] = "/tmp";
SS> Эти строчки несколько коробят глаз. Я не знаю всех тонкостей вашей
SS> задачи, но кажется, что использование mkstemp(3) тут было бы к месту.

Угу. Создание временных файлов со статическими именами неприемлимо.

>> +       sprintf(command,"tc qdisc del dev %s root handle 1: htb;\n",iface);
SS> Многочисленное использование sprintf() и strcpy() в коде наводит на
SS> мысль, что пользователям вашего билинга может повезти :)

Кстати есть ещё asprintf. Наиболее удобный вариант для подобных
применений, IMHO.

>> +       fclose(fh);
SS> Вот здесь (если не ошибаюсь) можно и память освободить:
SS> +    free(iface);
SS> +    free(allrate);

Если использовать strdupa/asprintf то можно (и нужно) не освобождать. Ибо
память выделяется в стеке.

Эти функции не шибко-то переносимы, но потрясающе удобны.

-- 
С уважением, Денис

http://freesource.info
----------------------------------------------------------------------------
Хотел предложить воспользоваться bushbug, но он оказался сломанным.
		-- ldv in sisyphus@
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20070623/ec755abd/attachment-0001.bin>


Подробная информация о списке рассылки Devel