[vtk-developers] EOF Errors from vtk3DSImporter

Bill Lorensen bill.lorensen at gmail.com
Thu Aug 8 16:13:50 EDT 2013


Kevin,

great detective work. Can you submit a gerrit patch?
http://itk.org/Wiki/VTK/Git/Develop

Bill



On Thu, Aug 8, 2013 at 2:09 PM, Kevin H. Hobbs <hobbsk at ohio.edu> wrote:

> 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)
>  {
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtk-developers
>
>
>


-- 
Unpaid intern in BillsBasement at noware dot com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtk-developers/attachments/20130808/ac406537/attachment.html>


More information about the vtk-developers mailing list