Print

Print


On Mon, 18 Sep 2006, David Berry wrote:

> I strongly suspect the 20-MAY-2004 change made to rec1_unpack_hcb.c by
> BKM. The history comment is "Do not attempt to unpack HCB for invalid HDS
> files". The change causes an error status to be returned if the file is
> not a valid HDS file, whereas before a success status was returned
> (presumably with garbage HCB values). Without this change, the call to
> rec_locate_hcb within rec_attach_file would return a good error status for
> an invalid HDS file, thus causing the following checks on hcb->stamp and
> hcb->version to be run. These would have detected that the file was not
> an HDS file, reported an error, and called rec_close_file.
> 
> However, with the BKM change to rec1_unpack_hcb.c, the call to
> rec_locate_hcb within rec_attach_file will return a bad error status,
> causing the checks on hcb->stamp and hcb->version to be skipped, resulting
> in the file not being closed.

Yes after peering at all that, that looks about right to me too. The other 
rec1_locate_hcb calls look like they could never generate this bad status, 
so hopefully they are OK.

> I think my solution of adding an extra call to rec_close_file into
> rec_attach_file is reasonable, since the intention of RFWS was obviously
> that the file should be closed if no HCB info is available (as evidenced
> by the presence of the other two rec_close_file calls).

Yes, that must be right.

Cheers,

Peter.