LINUX.ORG.RU

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

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

Так нельзя сделать. Можно написать на ассемблере функцию что будет создавать нужные указатели. Эта защита похожа на адрес санитайзер.

Эти указатели не совместимы со стандартом Си. Можно сконвертировать указатель в intptr, но нельзя обратно.

Поэтому, например, нельзя сделать выравнивание указателя вот так:

p = (char*)(((intptr_t)p + 15) & ~15);

Нужно так:

p += -(intptr_t)p & 15;

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

Так нельзя сделать. Можно написать на ассемблере функцию что будет создавать нужные указатели. Эта защита похожа на адрес санитайзер.

Эти указатели не совместимы со стандартом Си. Можно сконвертировать указатель в intptr, но нельзя обратно.

Поэтому, например, нельзя сделать выравнивание указателя вот так:

p = (char*)(((intptr_p)p + 15) & ~15);

Нужно так:

p += -(intptr_p)p & 15;