Hi Matthew,
It's "good form" to treat a record as "undefined" after the table has been closed, but as you note it is mostly ok to use records after they are closed (or before they are open). Except for Blobs and Memos - you can never touch those if the table is closed.
That said it is unusual to see a record buffer cleared by a class to CLOSE, and I would recommend digging a little deeper there. For example, you are calling p_web.CloseFile (which may contain embed code) so it might be handy to repeat the test using a simple CLOSE statement instead. (Either way, the result of that would be helpful in determining a direction to go.)
If there are specific calls to p_web.closeFile that you feel are messing up your code, let me know and I can investigate whether they are in the best place at the moment.
Cheers
Bruce