Skip to content

Commit 353385f

Browse files
committed
Fix nullary operator= segfault
Fixes hsutter#337.
1 parent 827ed79 commit 353385f

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

source/parse.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2080,9 +2080,9 @@ auto function_type_node::is_assignment() const
20802080
{
20812081
if (
20822082
my_decl->has_name("operator=")
2083+
&& (*parameters).ssize() > 1
20832084
&& (*parameters)[0]->has_name("this")
20842085
&& (*parameters)[0]->direction() == passing_style::inout
2085-
&& (*parameters).ssize() > 1
20862086
)
20872087
{
20882088
return true;
@@ -2128,9 +2128,9 @@ auto function_type_node::is_destructor() const
21282128
{
21292129
if (
21302130
my_decl->has_name("operator=")
2131+
&& (*parameters).ssize() == 1
21312132
&& (*parameters)[0]->has_name("this")
21322133
&& (*parameters)[0]->direction() == passing_style::move
2133-
&& (*parameters).ssize() == 1
21342134
)
21352135
{
21362136
return true;
@@ -5661,7 +5661,11 @@ class parser
56615661
return {};
56625662
}
56635663

5664-
if (
5664+
if (func->parameters->ssize() == 0)
5665+
{
5666+
error( "an operator= function must have a parameter", false );
5667+
}
5668+
else if (
56655669
func->parameters->ssize() > 0
56665670
&& (*func->parameters)[0]->has_name("this")
56675671
&& (*func->parameters)[0]->pass != passing_style::inout

0 commit comments

Comments
 (0)