<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7650.28">
<TITLE>Bug in vtkPlot3DReader.cxx and in vtkMultiBlockPLOT3DReader.cxx</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->
<BR>
<BR>
<P><FONT SIZE=2 FACE="Arial">There appears to be a bug in both vtkPlot3DReader.cxx and</FONT>
<BR><FONT SIZE=2 FACE="Arial">vtkMultiBlockPLOT3DReader.cxx</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">The function "ReadQHeader" (in both files) does not properly</FONT>
<BR><FONT SIZE=2 FACE="Arial">handle 2D geometries. </FONT>
</P>
<P><FONT SIZE=2 FACE="Arial"> int vtkPLOT3DReader::ReadQHeader(FILE* fp)</FONT>
<BR><FONT SIZE=2 FACE="Arial"> {</FONT>
<BR><FONT SIZE=2 FACE="Arial"> int numGrid = this->GetNumberOfOutputsInternal(fp, 0);</FONT>
<BR><FONT SIZE=2 FACE="Arial"> vtkDebugMacro("Q number of grids: " << numGrid);</FONT>
<BR><FONT SIZE=2 FACE="Arial"> if ( numGrid == 0 )</FONT>
<BR><FONT SIZE=2 FACE="Arial"> {</FONT>
<BR><FONT SIZE=2 FACE="Arial"> return VTK_ERROR;</FONT>
<BR><FONT SIZE=2 FACE="Arial"> }</FONT>
<BR><FONT SIZE=2 FACE="Arial"> </FONT>
<BR><FONT SIZE=2 FACE="Arial"> this->SkipByteCount(fp);</FONT>
<BR><FONT SIZE=2 FACE="Arial"> for(int i=0; i<numGrid; i++)</FONT>
<BR><FONT SIZE=2 FACE="Arial"> {</FONT>
<BR><FONT SIZE=2 FACE="Arial"> int ni, nj, nk;</FONT>
<BR><FONT SIZE=2 FACE="Arial"> this->ReadIntBlock(fp, 1, &ni);</FONT>
<BR><FONT SIZE=2 FACE="Arial"> this->ReadIntBlock(fp, 1, &nj);</FONT>
<BR><FONT SIZE=2 FACE="Arial"> this->ReadIntBlock(fp, 1, &nk);</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">The above incorrectly attempts to read "nk" whether the</FONT>
<BR><FONT SIZE=2 FACE="Arial">data is 2D or 3D. The above should be changed to test</FONT>
<BR><FONT SIZE=2 FACE="Arial">for the 2D case :</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial"> for(i=0; i<numGrid; i++)</FONT>
<BR><FONT SIZE=2 FACE="Arial"> {</FONT>
<BR><FONT SIZE=2 FACE="Arial"> int ni, nj, nk;</FONT>
<BR><FONT SIZE=2 FACE="Arial"> this->ReadIntBlock(fp, 1, &ni);</FONT>
<BR><FONT SIZE=2 FACE="Arial"> this->ReadIntBlock(fp, 1, &nj);</FONT>
<BR><FONT SIZE=2 FACE="Arial"> if (!this->TwoDimensionalGeometry)</FONT>
<BR><FONT SIZE=2 FACE="Arial"> {</FONT>
<BR><FONT SIZE=2 FACE="Arial"> this->ReadIntBlock(fp, 1, &nk);</FONT>
<BR><FONT SIZE=2 FACE="Arial"> }</FONT>
<BR><FONT SIZE=2 FACE="Arial"> else</FONT>
<BR><FONT SIZE=2 FACE="Arial"> {</FONT>
<BR><FONT SIZE=2 FACE="Arial"> nk = 1;</FONT>
<BR><FONT SIZE=2 FACE="Arial"> }</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">This is how it is correctly handled in the function </FONT>
<BR><FONT SIZE=2 FACE="Arial">"ReadGeometryHeader".</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">Regards,</FONT>
</P>
<P><FONT SIZE=2 FACE="Arial">--Mark Stucky</FONT>
</P>
</BODY>
</HTML>