The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Критическая уязвимость в GnuTLS. Разработчик OpenLDAP рекоме..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Есть идеи по улучшению форума и сайта ? Пишите.
. "Критическая уязвимость в GnuTLS, существенно влияющая на без..." +1 +/
Сообщение от www2 (??), 05-Мрт-14, 17:33 
> нормальный программист легко обойдется без goto, на что не способен выросший на
> васике

Сравните два варианта кода:

if (error1)
{
  free(ptr1);
  free(ptr2);
  free_structure(stru);
  return ERROR;
}

... /* Много кода */

if (error2)
{
  free(ptr1);
  free(ptr2);
  free_structure(stru);
  return ERROR;
}

Или

if (error1)
  goto error;

... /* Много кода */

if (error2)
  goto error;

error:
  free(ptr1);
  free(ptr2);
  free_structure(stru);
  return ERROR;

Теперь нужно добавить ещё одну структуру, которую нужно очищать при выходе. Какова вероятность, что добавив освобождение этой структуры в условный блок error1 вы не забудете про условный блок error2 в первом случае? И какова вероятность того, что вы забудете это сделать во втором случае и не обнаружите этого?

Нормальный программист обойдётся. Только выбор не всегда очевиден, как это представляется на первый взгляд.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Критическая уязвимость в GnuTLS. Разработчик OpenLDAP рекоме..., opennews, 05-Мрт-14, 11:51  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру