Browse Source

+ Fix for assign of null string

michael 27 years ago
parent
commit
9a38bce562
1 changed files with 11 additions and 10 deletions
  1. 11 10
      rtl/inc/astrings.pp

+ 11 - 10
rtl/inc/astrings.pp

@@ -123,22 +123,15 @@ Procedure Decr_Ansi_Ref (Var S : Pointer);
 Type plongint = ^longint;
 Type plongint = ^longint;
 Var l : plongint;
 Var l : plongint;
 Begin
 Begin
-//  dumpansirec(s);
   { Zero string }
   { Zero string }
-  If S=Nil then
-    exit;
-
+  If S=Nil then exit;
   { check for constant strings ...}
   { check for constant strings ...}
-  l:=S-FirstOff+8;
+  l:=@PANSIREC(S-FirstOff)^.Ref;
   If l^<0 then exit;
   If l^<0 then exit;
   Dec(l^);
   Dec(l^);
-//  dumpansirec(s);
   If l^=0 then
   If l^=0 then
     { Ref count dropped to zero }
     { Ref count dropped to zero }
-    begin
-//    Writeln ('Calling disposestring');
     DisposeAnsiString (S);        { Remove...}
     DisposeAnsiString (S);        { Remove...}
-    end
 end;
 end;
 
 
 Procedure Incr_Ansi_Ref (Var S : Pointer);
 Procedure Incr_Ansi_Ref (Var S : Pointer);
@@ -184,6 +177,11 @@ begin
   If S2<>nil then
   If S2<>nil then
     If PAnsiRec(S2-FirstOff)^.Ref>0 then
     If PAnsiRec(S2-FirstOff)^.Ref>0 then
       Inc(PAnsiRec(S2-FirstOff)^.ref);
       Inc(PAnsiRec(S2-FirstOff)^.ref);
+      Temp:=S2;
+      end;
+    end
+  else
+    temp:=S2;
   { Decrease the reference count on the old S1 }
   { Decrease the reference count on the old S1 }
   Decr_Ansi_Ref (S1);
   Decr_Ansi_Ref (S1);
   { And finally, have S1 pointing to S2 (or its copy) }
   { And finally, have S1 pointing to S2 (or its copy) }
@@ -704,7 +702,10 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.25  1998-10-30 21:42:48  michael
+  Revision 1.26  1998-11-02 09:46:12  michael
+  + Fix for assign of null string
+
+  Revision 1.25  1998/10/30 21:42:48  michael
   Fixed assignment of NIL string.
   Fixed assignment of NIL string.
 
 
   Revision 1.24  1998/10/22 11:32:23  michael
   Revision 1.24  1998/10/22 11:32:23  michael