Hi Tristan,

sorry I'm a bit late with this... but...

you're too clever for your own good :) The fix you checked in is subtly
wrong. In line 308, you're zapping Proc.Timeout_Chain_Prev, but in line
314/315, you need the old value. 

I've added a patch below to fix the fix :) 

Thanks, Tom 

--- gcc/vhdl/grt/grt-processes.adb.orig 2009-12-30 02:51:24.000000000 +0100
+++ gcc/vhdl/grt/grt-processes.adb      2009-12-30 02:52:27.000000000 +0100
@@ -304,8 +304,6 @@
       if Proc.Timeout_Chain_Prev /= null then
          Proc.Timeout_Chain_Prev.Timeout_Chain_Next :=
            Proc.Timeout_Chain_Next;
-         --  Be sure a second call won't corrupt the chain.
-         Proc.Timeout_Chain_Prev := null;
       elsif Process_Timeout_Chain = Proc then
          --  Only if Proc is in the chain.
          Process_Timeout_Chain := Proc.Timeout_Chain_Next;
@@ -315,6 +313,8 @@
            Proc.Timeout_Chain_Prev;
          Proc.Timeout_Chain_Next := null;
       end if;
+      --  Be sure a second call won't corrupt the chain.
+      Proc.Timeout_Chain_Prev := null;
    end Remove_Process_From_Timeout_Chain;
 
    procedure Ghdl_Process_Wait_Set_Timeout (Time : Std_Time)



_______________________________________________
Ghdl-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/ghdl-discuss

Reply via email to