diff --git a/src/Php/Analysis/SsaBuilder.php b/src/Php/Analysis/SsaBuilder.php index ee7ef2a7..7e50cf7d 100644 --- a/src/Php/Analysis/SsaBuilder.php +++ b/src/Php/Analysis/SsaBuilder.php @@ -984,7 +984,7 @@ class SsaBuilder $defs[] = $stmt->valueVar->name; } } elseif ($stmt instanceof Stmt\Catch_) { - if (is_string($stmt->var->name)) { + if ($stmt->var && is_string($stmt->var->name)) { $defs[] = $stmt->var->name; } } @@ -1223,7 +1223,7 @@ class SsaBuilder // Handle catch variables if ($stmt instanceof Stmt\Catch_) { - if (is_string($stmt->var->name)) { + if ($stmt->var && is_string($stmt->var->name)) { $varName = $stmt->var->name; $ssaId = $this->allocateSsaId(); $ssaVar = new SsaVar($ssaId, $varName, 0); diff --git a/src/gen_stub.php b/src/gen_stub.php index 06dffb0e..5aaaa0cd 100755 --- a/src/gen_stub.php +++ b/src/gen_stub.php @@ -3258,7 +3258,11 @@ class PropertyInfo extends VariableLike $zvalName = "property_{$propertyName}_default_value"; if ($this->defaultValue === null && $this->type !== null) { $code .= "\tzval $zvalName;\n"; - $code .= $this->getTypeDefaultValueCode($zvalName); + if ($this->flags & Modifiers::READONLY || $this->classFlags & Modifiers::READONLY) { + $code .= "\tZVAL_UNDEF(&$zvalName);\n"; + } else { + $code .= $this->getTypeDefaultValueCode($zvalName); + } } else { $code .= $defaultValue->initializeZval($zvalName, varName: $this->name->__toString()); }