Browse Source

* Some memory leak fixes from Vincent Snijders

git-svn-id: trunk@16306 -
michael 14 years ago
parent
commit
121cef51d2
2 changed files with 9 additions and 8 deletions
  1. 2 0
      packages/fcl-passrc/src/pastree.pp
  2. 7 8
      packages/fcl-passrc/src/pparser.pp

+ 2 - 0
packages/fcl-passrc/src/pastree.pp

@@ -1440,6 +1440,8 @@ begin
     (e.g. in Constants) }
     (e.g. in Constants) }
   if Assigned(VarType) then
   if Assigned(VarType) then
     VarType.Release;
     VarType.Release;
+  if Assigned(Expr) then
+    Expr.Release;
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 

+ 7 - 8
packages/fcl-passrc/src/pparser.pp

@@ -3093,16 +3093,15 @@ begin
       begin
       begin
         Variant := TPasVariant(CreateElement(TPasVariant, '', Parent));
         Variant := TPasVariant(CreateElement(TPasVariant, '', Parent));
         Parent.Variants.Add(Variant);
         Parent.Variants.Add(Variant);
-        Variant.Values := TStringList.Create;
         while True do
         while True do
         begin
         begin
-      Variant.Values.Add(ParseExpression(Parent));
-      NextToken;
-      if CurToken = tkColon then
-        break
-      else if CurToken <> tkComma then
-        ParseExc(SParserExpectedCommaColon);
-    end;
+          Variant.Values.Add(ParseExpression(Parent));
+          NextToken;
+          if CurToken = tkColon then
+            break
+          else if CurToken <> tkComma then
+            ParseExc(SParserExpectedCommaColon);
+        end;
         ExpectToken(tkBraceOpen);
         ExpectToken(tkBraceOpen);
     Variant.Members := TPasRecordType(CreateElement(TPasRecordType, '',
     Variant.Members := TPasRecordType(CreateElement(TPasRecordType, '',
       Variant));
       Variant));