diff options
author | Olly Betts <olly@survex.com> | 2022-11-25 09:51:58 +1300 |
---|---|---|
committer | Olly Betts <olly@survex.com> | 2022-11-25 09:51:58 +1300 |
commit | 81c6a6389873d58795a9b75a8b39f38dd32f850f (patch) | |
tree | a3815c6381d0b17ae15f55653e394fb6354237d4 /Source | |
parent | 5a8d58c3a761280036520f07b53f47d5856f9171 (diff) | |
download | swig-81c6a6389873d58795a9b75a8b39f38dd32f850f.tar.gz |
Fix undefined behaviour in parser
Fix undefined behaviour in swig's parser when handling default parameter
expressions containing method calls.
Fixes #2447
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CParse/parser.y | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/Source/CParse/parser.y b/Source/CParse/parser.y index 61fac2b2e..7b5df73ee 100644 --- a/Source/CParse/parser.y +++ b/Source/CParse/parser.y @@ -6582,7 +6582,7 @@ exprmem : ID ARROW ID { $$.type = 0; } | ID ARROW ID LPAREN callparms RPAREN { - $$.val = NewStringf("%s->%s(%s)", $1, $3, $5); + $$.val = NewStringf("%s->%s(%s)", $1, $3, $5.val); $$.type = 0; } | exprmem ARROW ID { @@ -6591,14 +6591,14 @@ exprmem : ID ARROW ID { } | exprmem ARROW ID LPAREN callparms RPAREN { $$ = $1; - Printf($$.val, "->%s(%s)", $3, $5); + Printf($$.val, "->%s(%s)", $3, $5.val); } | ID PERIOD ID { $$.val = NewStringf("%s.%s", $1, $3); $$.type = 0; } | ID PERIOD ID LPAREN callparms RPAREN { - $$.val = NewStringf("%s.%s(%s)", $1, $3, $5); + $$.val = NewStringf("%s.%s(%s)", $1, $3, $5.val); $$.type = 0; } | exprmem PERIOD ID { @@ -6607,7 +6607,7 @@ exprmem : ID ARROW ID { } | exprmem PERIOD ID LPAREN callparms RPAREN { $$ = $1; - Printf($$.val, ".%s(%s)", $3, $5); + Printf($$.val, ".%s(%s)", $3, $5.val); } ; |