From 929729d4307e28d7023fbee2b727a56fc34b744c Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Sun, 9 Feb 2014 18:19:03 +0100 Subject: fix fesetenv(FE_DFL_ENV) on i386 the default fenv was not set up properly, in particular the tag word that indicates the contents of the x87 registers was set to 0 (used) instead of 0xffff (empty) this could cause random crashes after setting the default fenv because it corrupted the fpu stack and then any float computation gives NaN result breaking the program logic (usually after a float to integer conversion). --- src/fenv/i386/fenv.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/fenv/i386/fenv.s b/src/fenv/i386/fenv.s index f6036d67..a189ca2e 100644 --- a/src/fenv/i386/fenv.s +++ b/src/fenv/i386/fenv.s @@ -126,7 +126,7 @@ fesetenv: push %eax push %eax push %eax - push %eax + pushl $0xffff push %eax pushl $0x37f fldenv (%esp) -- cgit v1.2.1