Re: bug in SOMETHING?!
- Posted by Igor Kachan <kinz at peterlink.ru> Feb 12, 2002
- 520 views
Hi chrissy, ---------- > Îò: tubby.toast at ntlworld.com > Êîìó: EUforum <EUforum at topica.com> > Òåìà: bug in SOMETHING?! > Äàòà: Monday, February 11, 2002 23:01 > I have code a bit like this > > a=allocate_string("blah") > err=c_func(functionname,{a}) --err<0 on error, 0 on success > free(a) > > The code works fine on my Celeron/433 running Windows 98, whatever I do. It > works fine on my Windows 95 486-SX/50 too - unless I bind it with shrouding > enabled. err then shows an error. However, if I then comment out the > free(a) line, err shows success. > > Now why should this be? Euphoria seems to be executing the third line > before the second in some circumstances. > > So I forced the program to check that functionname had been executed by > checking for the value of err before freeing a: > > a=allocate_string("blah") > err=c_func(functionname,{a}) > if err then end if --check value of err > free(a) > > and everything works fine. But this has taken days to track down. > > So is this a bug in > a) my code > b) Euphoria > c) Windows 95 > d) the 486 chip > e) something else? > > chrissy. 486-SX chips give no access to floating point component (FPU) on the crystal, so your problem may be solved, it seems to be, if you'll try the following command in AUTOEXEC.BAT: SET NO87=1 Just add this line into your AUTOEXEC.BAT file and reboot your machine. Then EU will use software floating point functions. A 486-DX has normal FPU (compatible with 80387 commands). [AS IS. Without Warranty] Good luck! Regards, Igor Kachan kinz at peterlink.ru