heurisko bug no. 6087
This applies to heurisko - all versions
Reading data from a file into objects of type huge or uhuge fails or returns an error, e.g. error 4020.
The size of a data point of type huge or uhuge depends on the operating system. On 32-bit operatings systems data points of these types have 32 bits while on 64-bit systems they have 64 bits. When on a 32-bit system a heurisko object of type huge or uhuge is saved, the file actually receives 32-bit data points. In contrast, when on a 64-bit system a heurisko object of type huge or uhuge is saved, the file actually receives 64-bit data points. When it comes to reading back from the file into an object of type huge or uhuge, a problem may occur. The type of problem depends on the operating system and on the file format.
Because such files do not contain meta data, there is no way to determine the data type in the file. Thus, the Write and the Read operators must be executed in the same type of operating system. If you fail to do so, the data in the file will be misinterpreted. If you read from a 32-bit data file into a 64-bit object, an end of file error will occur. Reading from a 64-bit data file into a 32-bit object will be undetected.
Because such files do not contain meta data, there is no way to determine the data type in the file. However, the situation is a little bit different from that of raw files. All values in the file are separated by a sepcific separator that was specified for the write operation. Thus, the read operation always picks up the correct value in the file. However, a 64-bit value from the file does not fit into a 32-bit data point in the heurisko object. Therefore, it is always possible to correctly read from a 32-bit data file into a 64-bit object. On the contrary, reading from a 64-data file into a 32-bit object is silently erroneous if a value in the file is larger than any number that fits into a 32-bit data word.
.h5 and .tif files:
These files are in the HDF5 ot TIFF format and contain meta data that allows to determine the type of the data in the file. Unfortunately, the heurisko modules io_hdf5 and io_tiff do not make enough distinctions when checking whether the data type of the target object and the data type in the file match. Erroneously, the module refuses to read 32-bit data into objects of type huge or uhuge on a 32-bit system.