Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 402dc50

Browse files
committed
Fix compiler crash for invalid C++ base classes.
1 parent cc6a220 commit 402dc50

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

CHANGES.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ Bugs fixed
2525

2626
* C++ class nesting was broken.
2727

28+
* Better checking for required nullary constructors for stack-allocated C++ instances.
29+
30+
* Remove module docstring in no-docstring mode.
31+
32+
* Fix specialization for varargs function signatures.
33+
34+
* Fix several compiler crashes.
35+
2836
Other changes
2937
-------------
3038

Cython/Compiler/Nodes.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1206,7 +1206,12 @@ def analyse_declarations(self, env):
12061206
scope = None
12071207
if self.attributes is not None:
12081208
scope = CppClassScope(self.name, env, templates = self.templates)
1209-
base_class_types = [b.analyse(scope or env) for b in self.base_classes]
1209+
def base_ok(base_class):
1210+
if base_class.is_cpp_class or base_class.is_struct:
1211+
return True
1212+
else:
1213+
error(self.pos, "Base class '%s' not a struct or class." % base_class)
1214+
base_class_types = filter(base_ok, [b.analyse(scope or env) for b in self.base_classes])
12101215
if self.templates is None:
12111216
template_types = None
12121217
else:

0 commit comments

Comments
 (0)