Fix seg fault parsing unterminated raw string literals

This commit is contained in:
William S Fulton 2017-02-09 22:00:04 +00:00
commit dee6b075a8
3 changed files with 10 additions and 0 deletions

View 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);

View file

@ -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).

View file

@ -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 );
}