LINUX.ORG.RU

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

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

Эта функция делает сначала одно, потом на третий вызов внезапно другое, затем снова возвращается к «обычной» работе.

И что? Может быть, так и было задумано? Компилятор не может и не должно волновать, что у функции долбанутый control flow и есть скрытое состояние. Это забота человека.

И да, попробуй описать словами, что именно делает функция, и для чего.

Первые два вызова — прибавляет *q к *p. На третий вызов вычитает *p из *q. Потом labs(INT_MIN) вызовов снова прибавляет *q к *p, потом происходит знаковое переполнение и UB.

Исправление intelfx, :

Эта функция делает сначала одно, потом на третий вызов внезапно другое, затем снова возвращается к «обычной» работе.

И что? Может быть, так и было задумано?

И да, попробуй описать словами, что именно делает функция, и для чего.

Первые два вызова — прибавляет *q к *p. На третий вызов вычитает *p из *q. Потом labs(INT_MIN) вызовов снова прибавляет *q к *p, потом происходит знаковое переполнение и UB.

Исправление intelfx, :

Эта функция делает сначала одно, потом на третий вызов внезапно другое, затем снова возвращается к «обычной» работе.

И что? Может быть, так и было задумано?

И да, попробуй описать словами, что именно делает функция, и для чего.

Первые два вызова — прибавляет *q к *p. На третий вызов вычитает *q из *p. Потом labs(INT_MIN) вызовов снова прибавляет *q к *p, потом происходит знаковое переполнение и UB.

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

Первые два вызова — прибавляет *q к *p. На третий вызов вычитает *q из *p. Потом labs(INT_MIN) вызовов снова прибавляет *q к *p, потом происходит знаковое переполнение и UB.