Browse Source

* reallocmem fixes

peter 26 years ago
parent
commit
7bf3155e2f
2 changed files with 174 additions and 168 deletions
  1. 143 140
      fcl/db/dataset.inc
  2. 31 28
      fcl/db/db.pp

+ 143 - 140
fcl/db/dataset.inc

@@ -1,11 +1,11 @@
 {
     $Id$
     This file is part of the Free Pascal run time library.
-    Copyright (c) 1999 by Michael Van Canneyt, member of the 
+    Copyright (c) 1999 by Michael Van Canneyt, member of the
     Free Pascal development team
 
     Dataset implementation
-    
+
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
 
@@ -41,7 +41,7 @@ begin
 end;
 
 
-procedure TDataset.ActivateBuffers; 
+procedure TDataset.ActivateBuffers;
 
 begin
   FBOF:=False;
@@ -50,7 +50,7 @@ begin
   FActiveRecord:=0;
 end;
 
-procedure TDataset.UpdateFieldDefs; 
+procedure TDataset.UpdateFieldDefs;
 
 begin
   //!! To be implemented
@@ -65,7 +65,7 @@ begin
      Here some magic will be needed later; for now just simply set
      Just set fieldno from listindex...
      Later we should take it from the fielddefs.
-  }   
+  }
   For I:=0 to FFieldList.Count-1 do
     FFieldList[i].FFieldNo:=I;
 end;
@@ -75,31 +75,31 @@ function TDataset.BookmarkAvailable: Boolean;
 Const BookmarkStates = [dsBrowse,dsEdit,dsInsert];
 
 begin
-  Result:=(Not IsEmpty) and (State in BookmarkStates) 
+  Result:=(Not IsEmpty) and (State in BookmarkStates)
           and (getBookMarkFlag(ActiveBuffer)=bfCurrent);
 end;
 
-procedure TDataset.CalculateFields(Buffer: PChar); 
+procedure TDataset.CalculateFields(Buffer: PChar);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.CheckActive; 
+procedure TDataset.CheckActive;
 
 begin
   If Not Active then
     DataBaseError(SInactiveDataset);
 end;
 
-procedure TDataset.CheckInactive; 
+procedure TDataset.CheckInactive;
 
 begin
   If Active then
     DataBaseError(SActiveDataset);
 end;
 
-procedure TDataset.ClearBuffers; 
+procedure TDataset.ClearBuffers;
 
 begin
   FRecordCount:=0;
@@ -109,19 +109,19 @@ begin
   FEOF:=True;
 end;
 
-procedure TDataset.ClearCalcFields(Buffer: PChar); 
+procedure TDataset.ClearCalcFields(Buffer: PChar);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.CloseBlob(Field: TField); 
+procedure TDataset.CloseBlob(Field: TField);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.CloseCursor; 
+procedure TDataset.CloseCursor;
 
 begin
   //!! To be implemented
@@ -141,127 +141,127 @@ begin
         CreateField(self);
 end;
 
-procedure TDataset.DataEvent(Event: TDataEvent; Info: Longint); 
+procedure TDataset.DataEvent(Event: TDataEvent; Info: Longint);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.DestroyFields; 
+procedure TDataset.DestroyFields;
 
 begin
   FFieldList.Clear;
 end;
 
-procedure TDataset.DoAfterCancel; 
+procedure TDataset.DoAfterCancel;
 
 begin
- If assigned(FAfterCancel) then 
+ If assigned(FAfterCancel) then
    FAfterCancel(Self);
 end;
 
-procedure TDataset.DoAfterClose; 
+procedure TDataset.DoAfterClose;
 
 begin
- If assigned(FAfterClose) then 
+ If assigned(FAfterClose) then
    FAfterClose(Self);
 end;
 
-procedure TDataset.DoAfterDelete; 
+procedure TDataset.DoAfterDelete;
 
 begin
- If assigned(FAfterDelete) then 
+ If assigned(FAfterDelete) then
    FAfterDelete(Self);
 end;
 
-procedure TDataset.DoAfterEdit; 
+procedure TDataset.DoAfterEdit;
 
 begin
- If assigned(FAfterEdit) then 
+ If assigned(FAfterEdit) then
    FAfterEdit(Self);
 end;
 
-procedure TDataset.DoAfterInsert; 
+procedure TDataset.DoAfterInsert;
 
 begin
- If assigned(FAfterInsert) then 
+ If assigned(FAfterInsert) then
    FAfterInsert(Self);
 end;
 
-procedure TDataset.DoAfterOpen; 
+procedure TDataset.DoAfterOpen;
 
 begin
- If assigned(FAfterOpen) then 
+ If assigned(FAfterOpen) then
    FAfterOpen(Self);
 end;
 
-procedure TDataset.DoAfterPost; 
+procedure TDataset.DoAfterPost;
 
 begin
- If assigned(FAfterPost) then 
+ If assigned(FAfterPost) then
    FAfterPost(Self);
 end;
 
-procedure TDataset.DoAfterScroll; 
+procedure TDataset.DoAfterScroll;
 
 begin
- If assigned(FAfterScroll) then 
+ If assigned(FAfterScroll) then
    FAfterScroll(Self);
 end;
 
-procedure TDataset.DoBeforeCancel; 
+procedure TDataset.DoBeforeCancel;
 
 begin
- If assigned(FBeforeCancel) then 
+ If assigned(FBeforeCancel) then
    FBeforeCancel(Self);
 end;
 
-procedure TDataset.DoBeforeClose; 
+procedure TDataset.DoBeforeClose;
 
 begin
- If assigned(FBeforeClose) then 
+ If assigned(FBeforeClose) then
    FBeforeClose(Self);
 end;
 
-procedure TDataset.DoBeforeDelete; 
+procedure TDataset.DoBeforeDelete;
 
 begin
- If assigned(FBeforeDelete) then 
+ If assigned(FBeforeDelete) then
    FBeforeDelete(Self);
 end;
 
-procedure TDataset.DoBeforeEdit; 
+procedure TDataset.DoBeforeEdit;
 
 begin
- If assigned(FBeforeEdit) then 
+ If assigned(FBeforeEdit) then
    FBeforeEdit(Self);
 end;
 
-procedure TDataset.DoBeforeInsert; 
+procedure TDataset.DoBeforeInsert;
 
 begin
- If assigned(FBeforeInsert) then 
+ If assigned(FBeforeInsert) then
    FBeforeInsert(Self);
 end;
 
-procedure TDataset.DoBeforeOpen; 
+procedure TDataset.DoBeforeOpen;
 
 begin
- If assigned(FBeforeOpen) then 
+ If assigned(FBeforeOpen) then
    FBeforeOpen(Self);
 end;
 
-procedure TDataset.DoBeforePost; 
+procedure TDataset.DoBeforePost;
 
 begin
- If assigned(FBeforePost) then 
+ If assigned(FBeforePost) then
    FBeforePost(Self);
 end;
 
-procedure TDataset.DoBeforeScroll; 
+procedure TDataset.DoBeforeScroll;
 
 begin
- If assigned(FBeforeScroll) then 
+ If assigned(FBeforeScroll) then
    FBeforeScroll(Self);
 end;
 
@@ -279,8 +279,8 @@ begin
     GetNextRecords;
     DoAfterOpen;
     DoAfterScroll;
-  except 
-    SetState(dsInactive);   
+  except
+    SetState(dsInactive);
     DoInternalClose;
     raise;
   end;
@@ -290,7 +290,7 @@ Function TDataset.RequiredBuffers : longint;
 {
   If later some datasource requires more buffers (grids etc)
   then it should be taken into account here...
-} 
+}
 
 begin
   Result:=0;
@@ -305,17 +305,17 @@ begin
   InternalClose;
 end;
 
-procedure TDataset.DoOnCalcFields; 
+procedure TDataset.DoOnCalcFields;
 
 begin
- If assigned(FOnCalcfields) then 
+ If assigned(FOnCalcfields) then
    FOnCalcFields(Self);
 end;
 
-procedure TDataset.DoOnNewRecord; 
+procedure TDataset.DoOnNewRecord;
 
 begin
- If assigned(FOnNewRecord) then 
+ If assigned(FOnNewRecord) then
    FOnNewRecord(Self);
 end;
 
@@ -325,13 +325,13 @@ begin
   Result:=FFieldList.FieldByNumber(FieldNo);
 end;
 
-function TDataset.FindRecord(Restart, GoForward: Boolean): Boolean; 
+function TDataset.FindRecord(Restart, GoForward: Boolean): Boolean;
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.FreeFieldBuffers; 
+procedure TDataset.FreeFieldBuffers;
 
 Var I : longint;
 
@@ -340,7 +340,7 @@ begin
     FFieldList[i].FreeBuffers;
 end;
 
-function TDataset.GetBookmarkStr: TBookmarkStr; 
+function TDataset.GetBookmarkStr: TBookmarkStr;
 
 begin
   Result:='';
@@ -351,25 +351,25 @@ begin
     end
 end;
 
-Function TDataset.GetBuffer (Index : longint) : Pchar;  
+Function TDataset.GetBuffer (Index : longint) : Pchar;
 
 begin
   Result:=FBuffers[Index];
 end;
 
-procedure TDataset.GetCalcFields(Buffer: PChar); 
+procedure TDataset.GetCalcFields(Buffer: PChar);
 
 begin
   //!! To be implemented
 end;
 
-function TDataset.GetCanModify: Boolean; 
+function TDataset.GetCanModify: Boolean;
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.GetChildren(Proc: TGetChildProc; Root: TComponent); 
+procedure TDataset.GetChildren(Proc: TGetChildProc; Root: TComponent);
 
 begin
   //!! To be implemented
@@ -384,7 +384,7 @@ end;
 {
   This is not yet allowed, FPC doesn't allow typed consts of Classes...
 
-Const 
+Const
   DefFieldClasses : Array [TFieldType] of TFieldClass =
     ( { ftUnknown} Tfield,
       { ftString} TStringField,
@@ -410,10 +410,10 @@ Const
     );
 }
 
-function TDataset.GetFieldClass(FieldType: TFieldType): TFieldClass; 
+function TDataset.GetFieldClass(FieldType: TFieldType): TFieldClass;
 
 begin
-  Case FieldType of 
+  Case FieldType of
      ftUnknown : Result:=Tfield;
      ftString: Result := TStringField;
      ftSmallint: Result := TLongIntField;
@@ -438,20 +438,20 @@ begin
   end;
 end;
 
-function TDataset.GetIsIndexField(Field: TField): Boolean; 
+function TDataset.GetIsIndexField(Field: TField): Boolean;
 
 begin
   //!! To be implemented
 end;
 
-function TDataset.GetNextRecord: Boolean; 
+function TDataset.GetNextRecord: Boolean;
 
 Var Shifted : Boolean;
 
 begin
 {$ifdef dsdebug}
   Writeln ('Getting next record. Internal RecordCount : ',FRecordCount);
-{$endif}  
+{$endif}
   Shifted:=FRecordCount=FBufferCount;
   If Shifted then
     begin
@@ -460,16 +460,16 @@ begin
     end;
 {$ifdef dsdebug}
   Writeln ('Getting data into buffer : ',FRecordCount);
-{$endif}  
+{$endif}
   Result:=GetRecord(FBuffers[FRecordCount],gmNext,True)=grOK;
   If Result then
     begin
-    If FRecordCount=0 then 
+    If FRecordCount=0 then
       ActivateBuffers
     else
       If FRecordCount<FBufferCount then
         Inc(FRecordCount);
-    FCurrentRecord:=FRecordCount;  
+    FCurrentRecord:=FRecordCount;
     end
   else
     begin
@@ -481,34 +481,34 @@ begin
     CursorPosChanged;
     end;
 {$ifdef dsdebug}
-  Writeln ('Result getting next record : ',Result);  
-{$endif}  
+  Writeln ('Result getting next record : ',Result);
+{$endif}
 end;
 
-function TDataset.GetNextRecords: Longint; 
+function TDataset.GetNextRecords: Longint;
 
 begin
   Result:=0;
 {$ifdef dsdebug}
   Writeln ('Getting next record(s), need :',FBufferCount);
-{$endif}  
+{$endif}
   While (FRecordCount<FBufferCount) and GetNextRecord do
     Inc(Result);
 {$ifdef dsdebug}
   Writeln ('Result Getting next record(s), GOT :',RESULT);
-{$endif}  
+{$endif}
 end;
 
-function TDataset.GetPriorRecord: Boolean; 
+function TDataset.GetPriorRecord: Boolean;
 
 Var Shifted : boolean;
 
 begin
 {$ifdef dsdebug}
   Writeln ('Getting previous record');
-{$endif}  
+{$endif}
   Shifted:=FRecordCount>0;
-  If Shifted Then 
+  If Shifted Then
     begin
     SetCurrentRecord(0);
     ShiftBuffers(-1);
@@ -516,18 +516,18 @@ begin
   Result:=GetRecord(FBuffers[0],gmPrior,True)=grOK;
   If Result then
     begin
-    If FRecordCount=0 then 
+    If FRecordCount=0 then
       ActivateBuffers
     else
       begin
       If FrecordCount<FBufferCount then
         Inc(FRecordCount);
       end;
-    FCurrentRecord:=0;    
+    FCurrentRecord:=0;
     end
   else
     begin
-    If Shifted then 
+    If Shifted then
       begin
       ShiftBuffers(1);
       end;
@@ -535,73 +535,73 @@ begin
     end;
 end;
 
-function TDataset.GetPriorRecords: Longint; 
+function TDataset.GetPriorRecords: Longint;
 
 begin
   Result:=0;
 {$ifdef dsdebug}
   Writeln ('Getting previous record(s), need :',FBufferCount);
-{$endif}  
+{$endif}
   While (FRecordCount<FbufferCount) and GetPriorRecord do
     Inc(Result);
 end;
 
-function TDataset.GetRecNo: Longint; 
+function TDataset.GetRecNo: Longint;
 
 begin
   //!! To be implemented
 end;
 
-function TDataset.GetRecordCount: Longint; 
+function TDataset.GetRecordCount: Longint;
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.InitFieldDefs; 
+procedure TDataset.InitFieldDefs;
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.InitRecord(Buffer: PChar); 
+procedure TDataset.InitRecord(Buffer: PChar);
 
 begin
   InternalInitRecord(Buffer);
   ClearCalcFields(Buffer);
 end;
 
-procedure TDataset.InternalCancel; 
+procedure TDataset.InternalCancel;
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.InternalEdit; 
+procedure TDataset.InternalEdit;
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.InternalRefresh; 
+procedure TDataset.InternalRefresh;
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.Loaded; 
+procedure TDataset.Loaded;
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.OpenCursor(InfoQuery: Boolean); 
+procedure TDataset.OpenCursor(InfoQuery: Boolean);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.RefreshInternalCalcFields(Buffer: PChar); 
+procedure TDataset.RefreshInternalCalcFields(Buffer: PChar);
 
 begin
   //!! To be implemented
@@ -624,7 +624,7 @@ begin
   FActive:=Value;
 end;
 
-procedure TDataset.SetBookmarkStr(const Value: TBookmarkStr); 
+procedure TDataset.SetBookmarkStr(const Value: TBookmarkStr);
 
 begin
   GotoBookMark(Pointer(Value))
@@ -641,7 +641,7 @@ begin
     Value:=I;
   If Value>FBufferCount then
     begin
-    ReAllocMem(FBuffers,(FBufferCount+1)*SizeOf(PChar),(Value+1)*SizeOf(PChar));
+    ReAllocMem(FBuffers,(Value+1)*SizeOf(PChar));
     FillChar(FBuffers[FBufferCount+1],(Value-FBufferCount)*SizeOF(Pchar),#0);
     Try
       For I:=FBufferCount to Value do
@@ -653,25 +653,25 @@ begin
         FreeRecordBuffer(FBuffers[i]);
         Inc(i);
         end;
-      raise;          
-    end;   
+      raise;
+    end;
     end
   else
     begin
     For I:=Value+1 to FBufferCount do
       FreeRecordBuffer(FBuffers[i]);
-    ReAllocMem(FBuffers,FBufferCount*SizeOf(Pchar),Value*SizeOf(Pchar));  
+    ReAllocMem(FBuffers,Value*SizeOf(Pchar));
     end;
-  FBufferCount:=Value;   
+  FBufferCount:=Value;
 end;
 
-procedure TDataset.SetChildOrder(Component: TComponent; Order: Longint); 
+procedure TDataset.SetChildOrder(Component: TComponent; Order: Longint);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.SetCurrentRecord(Index: Longint); 
+procedure TDataset.SetCurrentRecord(Index: Longint);
 
 begin
   If FCurrentRecord<>Index then
@@ -681,7 +681,7 @@ begin
       bfCurrent : InternalSetToRecord(FBuffers[Index]);
       bfBOF : InternalFirst;
       bfEOF : InternalLast;
-      end; 
+      end;
     FCurrentRecord:=index;
     end;
 end;
@@ -692,19 +692,19 @@ begin
   //!! To be implemented
 end;
 
-procedure TDataset.SetFilterOptions(Value: TFilterOptions); 
+procedure TDataset.SetFilterOptions(Value: TFilterOptions);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.SetFilterText(const Value: string); 
+procedure TDataset.SetFilterText(const Value: string);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.SetFiltered(Value: Boolean); 
+procedure TDataset.SetFiltered(Value: Boolean);
 
 begin
   //!! To be implemented
@@ -722,19 +722,19 @@ begin
   //!! To be implemented
 end;
 
-procedure TDataset.SetName(const Value: TComponentName); 
+procedure TDataset.SetName(const Value: TComponentName);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.SetOnFilterRecord(const Value: TFilterRecordEvent); 
+procedure TDataset.SetOnFilterRecord(const Value: TFilterRecordEvent);
 
 begin
   //!! To be implemented
 end;
 
-procedure TDataset.SetRecNo(Value: Longint); 
+procedure TDataset.SetRecNo(Value: Longint);
 
 begin
   //!! To be implemented
@@ -761,7 +761,7 @@ begin
   //!! To be implemented
 end;
 
-procedure TDataset.UpdateIndexDefs; 
+procedure TDataset.UpdateIndexDefs;
 
 begin
   //!! To be implemented
@@ -782,7 +782,7 @@ function TDataset.ActiveBuffer: PChar;
 begin
 {$ifdef dsdebug}
 //  Writeln ('Active buffer requested. Returning:',ActiveRecord);
-{$endif}  
+{$endif}
   Result:=FBuffers[ActiveRecord];
 end;
 
@@ -800,7 +800,7 @@ begin
   //!! To be implemented
 end;
 
-function TDataset.BookmarkValid(ABookmark: TBookmark): Boolean; 
+function TDataset.BookmarkValid(ABookmark: TBookmark): Boolean;
 {
   Should be overridden by descendant objects.
 }
@@ -808,7 +808,7 @@ begin
   Result:=False
 end;
 
-procedure TDataset.Cancel; 
+procedure TDataset.Cancel;
 
 
 begin
@@ -843,14 +843,14 @@ begin
   Active:=False;
 end;
 
-function TDataset.CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Longint; 
+function TDataset.CompareBookmarks(Bookmark1, Bookmark2: TBookmark): Longint;
 
 
 begin
   Result:=0;
 end;
 
-function TDataset.CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream; 
+function TDataset.CreateBlobStream(Field: TField; Mode: TBlobStreamMode): TStream;
 
 
 begin
@@ -952,18 +952,18 @@ begin
   end;
 end;
 
-procedure TDataset.FreeBookmark(ABookmark: TBookmark); 
+procedure TDataset.FreeBookmark(ABookmark: TBookmark);
 
 
 begin
   FreeMem(ABookMark,FBookMarkSize);
 end;
 
-function TDataset.GetBookmark: TBookmark; 
+function TDataset.GetBookmark: TBookmark;
 
 
 begin
-  if BookmarkAvailable then 
+  if BookmarkAvailable then
     begin
     GetMem (Result,FBookMarkSize);
     GetBookMarkdata(ActiveBuffer,Result);
@@ -972,7 +972,7 @@ begin
     Result:=Nil;
 end;
 
-function TDataset.GetCurrentRecord(Buffer: PChar): Boolean; 
+function TDataset.GetCurrentRecord(Buffer: PChar): Boolean;
 
 
 begin
@@ -983,7 +983,7 @@ procedure TDataset.GetFieldList(List: TList; const FieldNames: string);
 
 
 begin
-  
+
 end;
 
 procedure TDataset.GetFieldNames(List: TStrings);
@@ -1027,7 +1027,7 @@ begin
   Result:=(Bof and Eof);
 end;
 
-function TDataset.IsSequenced: Boolean; 
+function TDataset.IsSequenced: Boolean;
 
 begin
   //!! To be implemented
@@ -1052,13 +1052,13 @@ end;
 function TDataset.MoveBy(Distance: Longint): Longint;
 
   Procedure Scrollforward;
-  
+
   begin
 {$ifdef dsdebug}
     Writeln('Scrolling forward :',Distance);
     Writeln('Active buffer : ',FActiveRecord);
     Writeln('RecordCunt    : ',FRecordCount);
-{$endif}    
+{$endif}
     While (Distance>0) and not FEOF do
       begin
       If FActiveRecord<FRecordCount-1 then
@@ -1070,7 +1070,7 @@ function TDataset.MoveBy(Distance: Longint): Longint;
         begin
        {$ifdef dsdebug}
            Writeln('Moveby : need next record');
-       {$endif}    
+       {$endif}
         If GetNextRecord then
           Dec(Distance)
         else
@@ -1080,14 +1080,14 @@ function TDataset.MoveBy(Distance: Longint): Longint;
   end;
 
   Procedure ScrollBackward;
-  
+
   begin
 
 {$ifdef dsdebug}
     Writeln('Scrolling backward:',Abs(Distance));
     Writeln('Active buffer : ',FActiveRecord);
     Writeln('RecordCunt    : ',FRecordCount);
-{$endif}    
+{$endif}
     While (Distance<0) and not FBOF do
       begin
       If FActiveRecord>0 then
@@ -1099,7 +1099,7 @@ function TDataset.MoveBy(Distance: Longint): Longint;
         begin
        {$ifdef dsdebug}
            Writeln('Moveby : need next record');
-       {$endif}    
+       {$endif}
         If GetPriorRecord then
           Inc(Distance)
         else
@@ -1116,9 +1116,9 @@ begin
      ((Distance<0) and FBOF) then
     exit;
   Try
-    If Distance>0 then 
+    If Distance>0 then
       ScrollForward
-    else 
+    else
       ScrollBackward;
   finally
      DoAfterScroll;
@@ -1137,7 +1137,7 @@ begin
   Active:=True;
 end;
 
-procedure TDataset.Post; 
+procedure TDataset.Post;
 
 begin
   //!! To be implemented
@@ -1155,7 +1155,7 @@ begin
   //!! To be implemented
 end;
 
-procedure TDataset.Resync(Mode: TResyncMode); 
+procedure TDataset.Resync(Mode: TResyncMode);
 
 Var Count,ShiftCount : Longint;
 
@@ -1164,7 +1164,7 @@ begin
   If rmExact in Mode then
     begin
     { throw an exception if not found.
-      Normally the descendant should do this if DoCheck is true. }  
+      Normally the descendant should do this if DoCheck is true. }
     If GetRecord(Fbuffers[FRecordCount-1],gmcurrent,True)<>grOk Then
       DatabaseError(SNoSuchRecord,Self);
     end
@@ -1172,18 +1172,18 @@ begin
     { Can we find a record in the neighbourhood ?
       Use Shortcut evaluation for this, or we'll have some funny results. }
     If (GetRecord(Fbuffers[FRecordCount-1],gmcurrent,True)<>grOk) and
-       (GetRecord(Fbuffers[FRecordCount-1],gmprior,True)<>grOk) and 
+       (GetRecord(Fbuffers[FRecordCount-1],gmprior,True)<>grOk) and
        (GetRecord(Fbuffers[FRecordCount-1],gmprior,True)<>grOk) then
        begin
        // nothing found, invalidate buffer and bail out.
        ClearBuffers;
        Exit;
-       end; 
-  If (rmCenter in Mode) then     
+       end;
+  If (rmCenter in Mode) then
     ShiftCount:=FbufferCount div 2
   else
     // keep current position.
-    ShiftCount:=FActiveRecord;  
+    ShiftCount:=FActiveRecord;
   // Reposition on 0
   ShiftBuffers(FRecordCount-1);
   ActivateBuffers;
@@ -1209,7 +1209,7 @@ begin
     end;
 end;
 
-procedure TDataset.Translate(Src, Dest: PChar; ToOem: Boolean); 
+procedure TDataset.Translate(Src, Dest: PChar; ToOem: Boolean);
 
 begin
   //!! To be implemented
@@ -1243,7 +1243,7 @@ Procedure TDataset.ShiftBuffers (Distance : longint);
 
 Var Temp : Pointer;
     MoveSize : Longint;
-      
+
   Procedure ShiftBuffersUp;
   begin
     {$ifdef DSDEBUG}
@@ -1256,7 +1256,7 @@ Var Temp : Pointer;
   end;
 
   Procedure ShiftBuffersDown;
-  
+
   begin
     // Distance is NEGATIVE
     {$ifdef DSDEBUG}
@@ -1277,14 +1277,17 @@ begin
       ShiftBuffersDown
     else If Distance>0 then
       ShiftBuffersUp;
-  Finally  
+  Finally
     FreeMem(temp);
   end;
 end;
 
 {
   $Log$
-  Revision 1.2  1999-10-24 17:07:54  michael
+  Revision 1.3  1999-11-09 13:33:47  peter
+    * reallocmem fixes
+
+  Revision 1.2  1999/10/24 17:07:54  michael
   + Added copyright header
 
 }

+ 31 - 28
fcl/db/db.pp

@@ -1,12 +1,12 @@
 {
     $Id$
     This file is part of the Free Pascal run time library.
-    Copyright (c) 1999 by Michael Van Canneyt, member of the 
+    Copyright (c) 1999 by Michael Van Canneyt, member of the
     Free Pascal development team
 
 
     DB header file with interface section.
-    
+
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
 
@@ -28,11 +28,11 @@ const
 
   dsMaxBufferCount = MAXINT div 8;
   dsMaxStringSize = 8192;
- 
+
   // Used in AsBoolean for string fields to determine
   // whether it's true or false.
   YesNoChars : Array[Boolean] of char = ('Y','N');
-  
+
 type
 
 { Auxiliary type }
@@ -91,7 +91,7 @@ type
     property FieldClass: TFieldClass read GetFieldClass;
     property FieldNo: Longint read FFieldNo;
     property Name: string read FName;
-    property Precision: Longint read FPrecision write FPrecision; 
+    property Precision: Longint read FPrecision write FPrecision;
     property Required: Boolean read FRequired;
     property Size: Word read FSize;
   end;
@@ -123,7 +123,7 @@ type
 
   TFieldKind = (fkData, fkCalculated, fkLookup, fkInternalCalc);
   TFieldKinds = Set of TFieldKind;
-  
+
   TFieldNotifyEvent = procedure(Sender: TField) of object;
   TFieldGetTextEvent = procedure(Sender: TField; var Text: string;
     DisplayText: Boolean) of object;
@@ -132,7 +132,7 @@ type
   TFieldChars = set of Char;
   { TAlignment may need to come from somewhere else }
   TAlignMent = (taLeftjustify,taCenter,taRightJustify);
-  
+
   TField = class(TComponent)
   Private
     FAlignMent : TAlignment;
@@ -162,7 +162,7 @@ type
     FLookupKeyfields : String;
     FLookupresultField : String;
     FOffset : Word;
-    FOnChange : TNotifyEvent;
+    FOnChange : TFieldNotifyEvent;
     FOnGetText: TFieldGetTextEvent;
     FOnSetText: TFieldSetTextEvent;
     FOnValidate: TFieldNotifyEvent;
@@ -335,7 +335,7 @@ type
     property MinValue: Longint read FMinValue write SetMinValue default 0;
   end;
   TIntegerField = TLongintField;
-  
+
 { TSmallintField }
 
   TSmallintField = class(TLongintField)
@@ -366,7 +366,7 @@ type
 { TFloatField }
 
   TFloatField = class(TNumericField)
-  private 
+  private
     FMaxValue : Extended;
     FMinValue : Extended;
     FPrecision : Longint;
@@ -383,7 +383,7 @@ type
     constructor Create(AOwner: TComponent); override;
     Function CheckRange(AValue : Extended) : Boolean;
     property Value: Extended read GetAsFloat write SetAsFloat;
-    
+
   published
     property MaxValue: Extended read FMaxValue write FMaxValue;
     property MinValue: Extended read FMinValue write FMinValue;
@@ -569,7 +569,7 @@ type
     ixCaseInsensitive, ixExpression);
 
   TIndexDef = class
-  Private 
+  Private
     FExpression : String;
     FFields : String;
     FName : String;
@@ -630,8 +630,8 @@ type
 { TCheckConstraints }
 
   TCheckConstraints = class(TCollection)
-  Private 
-   Function GetItem(Index : Longint) : TCheckConstraint; 
+  Private
+   Function GetItem(Index : Longint) : TCheckConstraint;
    Procedure SetItem(index : Longint; Value : TCheckConstraint);
   protected
     function GetOwner: TPersistent; override;
@@ -674,7 +674,7 @@ type
       Property Dataset : TDataset Read FDataset;
       Property Fields [Index : Integer] : TField Read GetField; default;
     end;
-    
+
 
 { TDataSet }
 
@@ -715,7 +715,7 @@ type
 
   TDatasetClass = Class of TDataset;
   TBufferArray = ^pchar;
-     
+
   TDataSet = class(TComponent)
   Private
     FActive: Boolean;
@@ -771,7 +771,7 @@ type
     FState: TDataSetState;
     Procedure DoInternalOpen;
     Procedure DoInternalClose;
-    Function  GetBuffer (Index : longint) : Pchar;  
+    Function  GetBuffer (Index : longint) : Pchar;
     Function  GetField (Index : Longint) : TField;
     Procedure RemoveField (Field : TField);
     Procedure SetActive (Value : Boolean);
@@ -988,14 +988,14 @@ type
     Published
       Property DataBase : TDatabase Read FDatabase Write SetDatabase;
     end;
-  
+
   { TDatabase }
-    
+
   TLoginEvent = procedure(Database: TDatabase;
     LoginParams: TStrings) of object;
 
   TDatabaseClass = Class Of TDatabase;
-  
+
   TDatabase = class(TComponent)
   private
     FConnected : Boolean;
@@ -1070,7 +1070,7 @@ Const
 Procedure DatabaseError (Const Msg : String);
 Procedure DatabaseError (Const Msg : String; Comp : TComponent);
 Procedure DatabaseErrorFmt (Const Fmt : String; Args : Array Of Const);
-Procedure DatabaseErrorFmt (Const Fmt : String; Args : Array Of const; 
+Procedure DatabaseErrorFmt (Const Fmt : String; Args : Array Of const;
                             Comp : TComponent);
 
 implementation
@@ -1078,7 +1078,7 @@ implementation
 { ---------------------------------------------------------------------
     Auxiliary functions
   ---------------------------------------------------------------------}
-  
+
 
 
 Procedure DatabaseError (Const Msg : String);
@@ -1099,7 +1099,7 @@ begin
   Raise EDatabaseError.CreateFmt(Fmt,Args);
 end;
 
-Procedure DatabaseErrorFmt (Const Fmt : String; Args : Array Of const; 
+Procedure DatabaseErrorFmt (Const Fmt : String; Args : Array Of const;
                             Comp : TComponent);
 begin
   Raise EDatabaseError.CreateFmt(Format('%s : %s',[Comp.Name,Fmt]),Args);
@@ -1118,8 +1118,8 @@ begin
 end;
 
 
-      
-destructor TIndexDef.Destroy; 
+
+destructor TIndexDef.Destroy;
 
 begin
   //!! To be implemented
@@ -1202,7 +1202,7 @@ end;
 
 { TCheckConstraint }
 
-procedure TCheckConstraint.Assign(Source: TPersistent); 
+procedure TCheckConstraint.Assign(Source: TPersistent);
 
 begin
   //!! To be implemented
@@ -1212,7 +1212,7 @@ end;
 
 { TCheckConstraints }
 
-Function TCheckConstraints.GetItem(Index : Longint) : TCheckConstraint; 
+Function TCheckConstraints.GetItem(Index : Longint) : TCheckConstraint;
 
 begin
   //!! To be implemented
@@ -1256,7 +1256,10 @@ end.
 
 {
   $Log$
-  Revision 1.2  1999-10-24 17:07:54  michael
+  Revision 1.3  1999-11-09 13:33:47  peter
+    * reallocmem fixes
+
+  Revision 1.2  1999/10/24 17:07:54  michael
   + Added copyright header
 
 }