а
это как понимать?
вот я зарукоблудил такой код:
blocking_queue_t *q = 0;
blocking_queue_destroy(&q);
и рассчитываю что библиотека мне скажет что я идиот, ибо вызывать destroy для не созданного объекта — глупо. но библиотека ничего не скажет, ибо не содержит корректной проверки.
т.е. в идеальном случае, код использования этой библиотеки должен быть таким:
active_t *a = 0;
int ec = active_new(&a);
if ( ec ) {
printf(stderr, "initialization error, errno=%d\n", ec);
return ec;
}
blocking_queue_t *q = blocking_queue_new(a);
if ( !q ) {
ec = active_errno(a);
printf(stderr, "error creating blocking_queue object, errno=%d\n", ec);
active_destroy(&a);
return ec;
}
...
...
blocking_queue_destroy(&q);
active_destroy(&a);
я пытаюсь обратить твое внимание на нелогичности.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)