Browse Source

Merge of fixes necessary to get the IDE to behave correctly for go32v2
system, which range checks enabled.

Merged revisions 22947,27281,27284 from http://svn.freepascal.org/svn/fpc/trunk
------------------------------------------------------------------------
r22947 | pierre | 2012-11-07 17:22:57 +0100 (Wed, 07 Nov 2012) | 1 line

Avoid range check error in IDE by changing value of sfHasMemInfo constant to fit with longint value
------------------------------------------------------------------------
r27281 | pierre | 2014-03-25 12:21:44 +0100 (Tue, 25 Mar 2014) | 1 line

Fix ugly error causing troubles in go32v2 2.6.4 release IDE with GDB
------------------------------------------------------------------------
r27284 | pierre | 2014-03-25 18:07:07 +0100 (Tue, 25 Mar 2014) | 1 line

Avoid infinite recursion if symbols and gdb window are displayed while running debuggee
------------------------------------------------------------------------

git-svn-id: branches/fixes_2_6@27298 -

pierre 11 years ago
parent
commit
1cd22d49fc
3 changed files with 4 additions and 3 deletions
  1. 1 1
      compiler/browcol.pas
  2. 2 1
      ide/fpsymbol.pas
  3. 1 1
      rtl/go32v2/initc.pp

+ 1 - 1
compiler/browcol.pas

@@ -48,7 +48,7 @@ const
     sfObject        = $00000002;
     sfClass         = $00000004;
     sfPointer       = $00000008;
-    sfHasMemInfo    = $80000000;
+    sfHasMemInfo    = $40000000;
 
 type
     TStoreCollection = object(TStringCollection)

+ 2 - 1
ide/fpsymbol.pas

@@ -551,11 +551,12 @@ begin
     DisposeStr(St);
   if assigned(Expr) then
     begin
+      { avoid infinite recursion here }
+      GDBI:=Debugger^.RunCount;
       p:=Debugger^.GetValue(Expr^);
       St:=NewStr(GetPChar(p));
       if assigned(p) then
         StrDispose(p);
-      GDBI:=Debugger^.RunCount;
     end;
 {$endif ndef NODEBUG}
 {$endif BROWSERCOL}

+ 1 - 1
rtl/go32v2/initc.pp

@@ -72,7 +72,7 @@ procedure run_c_destructors;
        exit;
      already_done:=bss_count;
      f:=dtor[0];
-     nb:=((cardinal(last_dtor)-cardinal(first_dtor)) div sizeof(pointer));
+     nb:=((cardinal(@last_dtor)-cardinal(@first_dtor)) div sizeof(pointer));
      for i:=1 to nb do
        begin
           f();