Re[3]: Как бороться ?
От: Sergey Россия  
Дата: 20.03.02 14:46
Оценка:
Здравствуйте flyker, Вы писали:


GR>>Вставь кусочек кода, где(по-твоему) возникает эксепшен


F>Вот исходник:


F>char* Intl::PrintMoney(double dbl, char *str, WORD w)

F>{
F> if( dbl < 0 && dbl > -MoneyEps() ) dbl = 0.0;
F> return PrintFloat(dbl, str, bCurrDigits, w);
F>}

F>Вот он-же в дебаггере:


F>0FFB7441 push ebp

F>0FFB7442 mov ebp,esp
F>0FFB7444 push ecx
F>0FFB7445 push ecx
F>0FFB7446 mov dword ptr [ebp-8],0CCCCCCCCh
F>0FFB744D mov dword ptr [ebp-4],0CCCCCCCCh
F>0FFB7454 mov dword ptr [ebp-8],edx
F>0FFB7457 mov dword ptr [ebp-4],ecx
F>0FFB745A fld qword ptr [dbl]
F>0FFB745D fcomp qword ptr [__real@8@00000000000000000000 (0ffc64e0)] Исключение возникает по этому адресу
F>0FFB7463 fnstsw ax
F>0FFB7465 sahf
F>0FFB7466 jae Intl::PrintMoney+3Ch (0ffb747d)
F>0FFB7468 fld dword ptr [Intl::moneyEps (0ffd39ac)]
F>0FFB746E fchs
F>0FFB7470 fcomp qword ptr [dbl]
F>0FFB7473 fnstsw ax
F>0FFB7475 sahf
F>0FFB7476 jae Intl::PrintMoney+3Ch (0ffb747d)

dbl какой перед сравнением? Наверное, NaN какой-нибудь, да еще и signaling NaN небось? Вставь перед сравнением проверку _finite(dbl) или хотя бы _isnan(dbl).
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.