diff --git a/CHANGES.current b/CHANGES.current index 7c57b7040..a9d580153 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -1,6 +1,10 @@ Version 2.0.0 (in progress) ============================ +2010-05-07: wsfulton + Apply patch #2955146 from Sergey Satskiy to fix expressions containing divide by + operator in constructor initialization lists. + 2010-05-05: wsfulton [R] Memory leak fix handling const std::string & inputs, reported by Will Nolan. diff --git a/Examples/test-suite/common.mk b/Examples/test-suite/common.mk index 831b1b78f..1701dd8ba 100644 --- a/Examples/test-suite/common.mk +++ b/Examples/test-suite/common.mk @@ -193,6 +193,7 @@ CPP_TEST_CASES += \ extern_c \ extern_namespace \ extern_throws \ + expressions \ features \ fragments \ friends \ diff --git a/Examples/test-suite/expressions.i b/Examples/test-suite/expressions.i new file mode 100644 index 000000000..7b907ec3b --- /dev/null +++ b/Examples/test-suite/expressions.i @@ -0,0 +1,10 @@ +%module expressions + +%inline %{ +struct A +{ + A() : k( 20/(5-1) ) {} + A(int i) : k( 20/(5-1)*i /* comment */ ) {} + int k; +}; +%} diff --git a/Source/Swig/scanner.c b/Source/Swig/scanner.c index db7f0a06e..7f6e3e149 100644 --- a/Source/Swig/scanner.c +++ b/Source/Swig/scanner.c @@ -1182,6 +1182,10 @@ int Scanner_skip_balanced(Scanner * s, int startchar, int endchar) { state = 11; else if (c == '*') state = 12; + else if (c == startchar) { + state = 0; + num_levels++;; + } else state = 0; break;