[vtk-developers] EOF Errors from vtk3DSImporter
Kevin H. Hobbs
hobbsk at ohio.edu
Thu Aug 8 14:09:28 EDT 2013
On 08/08/2013 10:33 AM, Kevin H. Hobbs wrote:
>
> Maybe start_chunk could call new functions with names like peek_word and
> peek_dword that are just like read_word and read_dword but don't complain.
>
The following makes all the errors go away:
diff --git a/IO/Import/vtk3DSImporter.cxx b/IO/Import/vtk3DSImporter.cxx
index 4bcba03..a58ba31 100644
--- a/IO/Import/vtk3DSImporter.cxx
+++ b/IO/Import/vtk3DSImporter.cxx
@@ -96,7 +96,9 @@ static void start_chunk (vtk3DSImporter *importer,
vtk3DSChunk *chunk);
static void end_chunk (vtk3DSImporter *importer, vtk3DSChunk *chunk);
static byte read_byte (vtk3DSImporter *importer);
static word read_word (vtk3DSImporter *importer);
+static word peek_word (vtk3DSImporter *importer);
static dword read_dword (vtk3DSImporter *importer);
+static dword peek_dword (vtk3DSImporter *importer);
static float read_float (vtk3DSImporter *importer);
static void read_point (vtk3DSImporter *importer, vtk3DSVector v);
static char *read_string (vtk3DSImporter *importer);
@@ -1043,8 +1045,8 @@ static float parse_float_percentage(vtk3DSImporter
*importer)
static void start_chunk (vtk3DSImporter *importer, vtk3DSChunk *chunk)
{
chunk->start = ftell(importer->GetFileFD());
- chunk->tag = read_word(importer);
- chunk->length = read_dword(importer);
+ chunk->tag = peek_word(importer);
+ chunk->length = peek_dword(importer);
if (chunk->length == 0)
{
chunk->length = 1;
@@ -1083,6 +1085,19 @@ static word read_word(vtk3DSImporter *importer)
return data;
}
+static word peek_word(vtk3DSImporter *importer)
+{
+ word data;
+
+ if (fread (&data, 2, 1, importer->GetFileFD()) != 1)
+ {
+ data = 0;
+ }
+ vtkByteSwap::Swap2LE ((short *) &data);
+ return data;
+}
+
+
static dword read_dword(vtk3DSImporter *importer)
{
dword data;
@@ -1098,6 +1113,19 @@ static dword read_dword(vtk3DSImporter *importer)
return data;
}
+static dword peek_dword(vtk3DSImporter *importer)
+{
+ dword data;
+
+ if (fread (&data, 4, 1, importer->GetFileFD()) != 1)
+ {
+ data = 0;
+ }
+
+ vtkByteSwap::Swap4LE ((char *) &data);
+ return data;
+}
+
static float read_float(vtk3DSImporter *importer)
{
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 255 bytes
Desc: OpenPGP digital signature
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20130808/19a71152/attachment.sig>
More information about the vtk-developers
mailing list