Index: oup/current/DataAccess/Access_OniArchive.pas
===================================================================
--- oup/current/DataAccess/Access_OniArchive.pas	(revision 147)
+++ oup/current/DataAccess/Access_OniArchive.pas	(revision 148)
@@ -39,5 +39,6 @@
     function GetRawInfo(FileID, DatOffset: Integer): TRawDataInfo; override;
 
-    procedure LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; target: Pointer);
+    procedure LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; var target: TStream); overload;
+    procedure LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; target: Pointer); overload;
     procedure LoadRawFile(FileID, DatOffset: Integer; var Target: TStream); overload; override;
     procedure UpdateRawFile(FileID, DatOffset: Integer; Src: TStream); overload; override;
@@ -445,7 +446,8 @@
 
 
-
-procedure TAccess_OniArchive.LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; target: Pointer);
-begin
+procedure TAccess_OniArchive.LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; var target: TStream);
+begin
+  if not Assigned(Target) then
+    Target := TMemoryStream.Create;
   if not LocSep then
   begin
@@ -456,5 +458,6 @@
     begin
       Fraw_file.Seek(RawAddr, soFromBeginning);
-      Fraw_file.Read(target^, size);
+      Target.CopyFrom(Fraw_file, size);
+      Target.Seek(0, soFromBeginning);
     end;
     if UnloadWhenUnused then
@@ -474,5 +477,6 @@
     begin
       Fsep_file.Seek(RawAddr, soFromBeginning);
-      Fsep_file.Read(target^, size);
+      Target.CopyFrom(Fsep_file, size);
+      Target.Seek(0, soFromBeginning);
     end;
     if UnloadWhenUnused then
@@ -484,4 +488,14 @@
       FSepOpened := True;
   end;
+end;
+
+procedure TAccess_OniArchive.LoadRawOffset(LocSep: Boolean; RawAddr, Size: Integer; target: Pointer);
+var
+  data: TStream;
+begin
+  data := nil;
+  LoadRawOffset(LocSep, RawAddr, Size, data);
+  data.Read(Target^, Size);
+  data.Free;
 end;
 
@@ -591,4 +605,5 @@
 end;
 
+
 procedure TAccess_OniArchive.UpdateRawFilePart(FileID, DatOffset, Offset, Size: Integer; Src: TStream);
 var
