Restored a return statement that got deleted way back in changeset 1cd73ed without anybody (well, me) noticing.
The effect of this missing return statement was to make aread callbacks that return true continue as if they had returned false and randomly crash after they try to write to the (now freed) buffer.
Amazingly, this hasn't been reported up until now. I suspect that there are few or no cases where aread callbacks return a value other than zero.
Also added a paranoid buffer check, which is probably unnecessary but looks like good practice in any case.
diff --git a/src/interp.c b/src/interp.c index 60b3e13..a5fa8fe 100644