summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorOlly Betts <olly@survex.com>2022-11-25 09:51:58 +1300
committerOlly Betts <olly@survex.com>2022-11-25 09:51:58 +1300
commit81c6a6389873d58795a9b75a8b39f38dd32f850f (patch)
treea3815c6381d0b17ae15f55653e394fb6354237d4 /Source
parent5a8d58c3a761280036520f07b53f47d5856f9171 (diff)
downloadswig-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.y8
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);
}
;