Fix unit tests
[epclust.git] / epclust / R / de_serialize.R
index 682db53..242e23a 100644 (file)
@@ -62,12 +62,16 @@ serialize = function(data_ascii, data_bin_file, nb_per_chunk,
 getDataInFile = function(indices, data_bin_file, nbytes=4, endian=.Platform$endian)
 {
        data_bin = file(data_bin_file, "rb")
+       data_size = file.info(data_bin)$size
        data_length = readBin(data_bin, "integer", 1, 8, endian)
        #Ou t(sapply(...)) (+ rapide ?)
        data_ascii = do.call( rbind, lapply( indices, function(i) {
-               ignored = seek(data_bin, 8+((i-1)*data_length*nbytes))
+               offset = 8+(i-1)*data_length*nbytes
+               if (offset > data_size)
+                       return (vector("double",0))
+               ignored = seek(data_bin, offset)
                readBin(data_bin, "double", n=data_length, size=nbytes)
        } ) )
        close(data_bin)
-       data_ascii
+       if (ncol(data_ascii)>0) data_ascii else NULL
 }