Use an array for line offset mapping (if file < 4GB)
authorRené Stadler <mail@renestadler.de>
Wed, 21 Nov 2007 09:40:13 +0000 (11:40 +0200)
committerStefan Sauer <ensonic@users.sf.net>
Thu, 11 Sep 2014 18:51:38 +0000 (20:51 +0200)
debug-viewer/GstDebugViewer/Data.py

index fa12f564d218ab482cf353d2305ae06ba19fa92e..cb27e24b542ed2f02a482dbdc7a3fa3c9dad08af 100644 (file)
@@ -169,9 +169,6 @@ class LineCache (Producer):
         Producer.__init__ (self)
 
         self.logger = logging.getLogger ("linecache")
-
-        self.offsets = []
-        self.levels = [] # FIXME
         self.dispatcher = dispatcher
 
         import mmap
@@ -181,6 +178,18 @@ class LineCache (Producer):
         self.__file_size = self.__fileobj.tell ()
         self.__fileobj.seek (0)
 
+        from array import array
+        offsets = array ("L")
+        try:
+            offsets.append (self.__file_size)
+        except OverflowError:
+            offsets = []
+        else:
+            del offsets[0]
+        self.offsets = offsets
+
+        self.levels = [] # FIXME
+
     def start_loading (self):
 
         self.logger.debug ("dispatching load process")