Index: oup/current/Global/RawList.pas
===================================================================
--- oup/current/Global/RawList.pas	(revision 146)
+++ oup/current/Global/RawList.pas	(revision 147)
@@ -142,5 +142,10 @@
   links: Integer;
   Data:  TStream;
-begin
+  read:  Integer;
+  char:  Byte;
+  foundzeros: Byte;
+begin
+  SetLength(Result, 0);
+
   ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $18, 4, @baselink);
   ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $1C, 4, @links);
@@ -148,37 +153,27 @@
   begin
     ConManager.Connection[ConnectionID].LoadDatFilePart(fileid, $20 + (links - 1) * 4, 4, @lastlink);
-//    SetLength(Data, lastlink + 1024);
     Data := nil;
     TAccess_OniArchive(ConManager.Connection[ConnectionID]).LoadRawOffset(
           False, baselink, lastlink + 1024, Data);
-//    TOniDataDat(connection).LoadRawOffset(False, baselink, lastlink + 1024, Data);
-    //      connection.LoadRawFile(fileid,$1C,baselink,lastlink+1024,False,@data[0]);
-    raise ENotImplemented.Create('RawList.SUBT');
-  end;
-{
-    k := 0;
-    for j := 0 to 1024 do
-    begin
-      if (Data[lastlink + j] = $00) or (j = 1024) then
+
+    foundzeros := 0;
+    repeat
+      read := Data.Read(char, 1);
+      if (read > 0) and (char = 0) then
       begin
-        if j < 1024 then
-        begin
-          if k = 0 then
-          begin
-            k := 1;
-          end
-          else
-          begin
-            SetLength(Result, 1);
-            Result[0].src_offset := $18;
-            Result[0].raw_addr   := baselink;
-            Result[0].raw_size   := lastlink + j;
-            Break;
-          end;
-        end;
+        Inc(foundzeros);
       end;
-    end;
-  end;
-}
+    until (read = 0) or (foundzeros = 2);
+
+    if foundzeros = 2 then
+    begin
+      SetLength(Result, 1);
+      Result[0].SrcID     := FileID;
+      Result[0].SrcOffset := $18;
+      Result[0].RawAddr   := baselink;
+      Result[0].RawSize   := Data.Position;
+      Result[0].LocSep    := False;
+    end;
+  end;
 end;
 
