handle cases where the hash context gets cleaned up before the hash wrapper

Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
Robin Appelman 2022-08-31 15:05:10 +02:00
parent f56ecf9242
commit a9575a7029
No known key found for this signature in database
GPG key ID: 42B69D8A64526EFB

View file

@ -67,7 +67,11 @@ class HashWrapper extends Wrapper {
public function stream_close() {
if (is_callable($this->callback)) {
call_user_func($this->callback, hash_final($this->hash));
// if the stream is closed as a result of the end-of-request GC, the hash context might be cleaned up before this stream
if ($this->hash instanceof \HashContext) {
$hash = hash_final($this->hash);
call_user_func($this->callback, $hash);
}
// prevent further calls by potential PHP 7 GC ghosts
$this->callback = null;
}