[osy] Re: Assert

  • From: "Lukas Jezek" <lukas.jezek@xxxxxxxxx>
  • To: osy@xxxxxxxxxxxxx
  • Date: Tue, 11 Nov 2008 10:52:59 +0100

Tak jeste jinak, chybu zpusoboval tento, blbe napsany kod:

118     static void block_check (void *addr)
119     {
120             /* Calculate the position of the header. */
121             heap_block_head_t *head = (heap_block_head_t *) addr;
122     
123             /* Make sure the header is still intact. */
124             assert (head->magic == HEAP_BLOCK_HEAD_MAGIC);
125     
126             /* Calculate the position of the footer. */
127             heap_block_foot_t *foot
128                     = (heap_block_foot_t *) (addr + head->size -
sizeof (heap_block_foot_t));
129     
130             /* Make sure the footer is still intact. */
131             assert (foot->magic == HEAP_BLOCK_FOOT_MAGIC);
132     
133             /* And one extra check for the fun of it. */
134             assert (head->size == foot->size);
135     }


Melo by stacit rozdelit inicializaci na dva radky... Vecer to udelam.

Chyba neni v assertu, ale v te funkci v mm/malloc.c


Lukas

Dne 11. listopad 2008 1:23 Lukas Jezek <lukas.jezek@xxxxxxxxx> napsal(a):
> V pripade, ze se makro assert exportuje na prazdny prikaz, tak dojde k tomu,
> ze kdyz sis predtim vytvoril promennou, kterou chces assertovat, ale dal ji
> nepouzijes, tak dostanes warningem - resp. errorem.
>
> Takze by asi bylo dobry, kdyby se assert bez debug prekladal na if (podm) {}
>
> L.
>
> Jiri Horky napsal(a):
>>
>> hele koukam  do toho kodu na ten assert a ktera promenna je nepouzita?
>>
>> Lukas Jezek wrote:
>>>
>>> Zdarec,
>>>
>>> mam pocit, ze je assert definovanej spatne, kdyz zadefinuju NDEBUG, tak
>>> mi to na spouste mist hlasi, ze promenna je nepouzita - asi by bylo dobry,
>>> kdyby se assert prekladal na prazdny if v pripade, ze se nema debuzit -
>>> prekladac to stejne odstrani...
>>>
>>> Co vy na to?
>>>
>>> Jo, do c.h jsem vyrobil makra na pridani magicku do struktur a jejich
>>> kontrolu, ktery se v zavislosti na definici symbolu NDEBUG expanduji na
>>> skutecny kod nebo prazdna makra.
>>>
>>> V timerech a mutexech pak po pulnoci (resp. radsi rano) uvidite pouziti -
>>> celkem krasny a lehky :D
>>>
>>>
>>> L.
>>>
>>>
>>
>
>

Other related posts: