Compact classes might have a unref_function in external packages. Therefore
subclassing them resulted in an errornous reference to free_function.
base_class = base_class.base_class;
}
string autoptr_cleanup_func;
- if (!is_gtypeinstance && !is_gsource) {
- autoptr_cleanup_func = get_ccode_free_function (base_class);
- } else {
+ if (is_reference_counting (base_class)) {
autoptr_cleanup_func = get_ccode_unref_function (base_class);
+ } else {
+ autoptr_cleanup_func = get_ccode_free_function (base_class);
}
if (autoptr_cleanup_func == null || autoptr_cleanup_func == "") {
Report.error (cl.source_reference, "internal error: autoptr_cleanup_func not available");
objects/classes-implicit-implementation.vala \
objects/compact-class.vala \
objects/compact-class-destructor.vala \
+ objects/compact-class-refcount.vala \
objects/constructor-abstract-public.test \
objects/constructor-variadic.test \
objects/constructors.vala \
--- /dev/null
+class FooRegex : Regex {
+ public FooRegex () throws RegexError {
+ base ("^:*$");
+ }
+}
+
+void main () {
+ try {
+ var foo = new FooRegex ();
+ } catch {
+ }
+}