LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

насколько совместны след утверждения:

5->2 без write-lock1'а
assert(!obj->status2 || obj->status2==4 && obj->data);

по человечьи это:

assert(obj->status2==0 || obj->status2==4 && obj->data);

переход 5->2 это изменение status2 с 4 на 0. вот если он произошел после невыполнения первого условия (то, что перед || ), невыполнятся оба условия и будет ассерт…. но это если компилятор не взял на регистр status2… короче это место точно непонятное.

Исходная версия alysnix, :

насколько совместны след утверждения:

5->2 без write-lock1'а
assert(!obj->status2 || obj->status2==4 && obj->data);

по человечьи это:

assert(obj->status2==0 || obj->status2==4 && obj->data);

переход 5->2 это изменение status2 с 4 на 0. вот если он произошел после невыполнения первого условия (то, что перед || ), невыполнятся оба условия и будет ассерт.