Fix seg fault parsing unterminated raw string literals
This commit is contained in:
parent
b3a61a3876
commit
dee6b075a8
3 changed files with 10 additions and 0 deletions
4
Examples/test-suite/errors/cpp_raw_string_termination.i
Normal file
4
Examples/test-suite/errors/cpp_raw_string_termination.i
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
%module xxx
|
||||
|
||||
%feature("docstring") func2 R"ABC(Calculate :math:`D^\nu \rho(x)`.)AB";
|
||||
void func2(double* foo, int bar, char** baz);
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
cpp_raw_string_termination.i:3: Error: Unterminated raw string, started with R"ABC( is not terminated by )ABC"
|
||||
cpp_raw_string_termination.i:3: Error: Syntax error in input(1).
|
||||
|
|
@ -754,6 +754,10 @@ static int look(Scanner *s) {
|
|||
str_delimiter = 0;
|
||||
return SWIG_TOKEN_STRING;
|
||||
} else { /* Incorrect end delimiter occured */
|
||||
if (c == 0) {
|
||||
Swig_error(cparse_file, cparse_start_line, "Unterminated raw string, started with R\"%s( is not terminated by )%s\"\n", str_delimiter, str_delimiter);
|
||||
return SWIG_TOKEN_ERROR;
|
||||
}
|
||||
retract( s, i );
|
||||
Delete( end_delimiter );
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue