Почему CreateComObject меняет FPU control word?

Maxim Rusov
Дата: 09.01.2020 13:06:06
Subj. В этом есть какой-то смысл (который я не понимаю). Или это тупо бага?
Квейд
Дата: 09.01.2020 13:12:27
Maxim Rusov
Дата: 09.01.2020 13:21:08
Не объясняет.
kealon(Ruslan)
Дата: 09.01.2020 17:27:50
Maxim Rusov,

тупо бага в реализации некоторых объектов, особо умных товарищей, закрывай как в обёртке к DefWinProc
Maxim Rusov
Дата: 10.01.2020 17:02:11
Там (упрощенно) такой код:
    try
      Set8087CW( Default8087CW or $08);
      OleCheck(CoCreateInstance(...));
    finally
      Reset8087CW;
    end;

Выглядит, как будто хотели восстановить состояние FPU control word после вызова CoCreateInstance но забыли что Set8087CW меняет Default8087CW

Я запатчил так:
    OldValue := Default8087CW;
    try
      Set8087CW( Default8087CW or $08);
      OleCheck(CoCreateInstance(...));
    finally
      Set8087CW( OldValue );
    end;