]> git.proxmox.com Git - mirror_qemu.git/commitdiff
qom/object: add some interface asserts
authorMarc-André Lureau <marcandre.lureau@redhat.com>
Wed, 12 Sep 2018 12:53:03 +0000 (16:53 +0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 2 Oct 2018 17:09:13 +0000 (19:09 +0200)
An interface can't have any instance size or callback, or itself
implement other interfaces (this is unsupported).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20180912125303.29158-1-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
qom/object.c

index 75d1d48944384492a01a43a0371f29dcc9222ed4..9222b23172713f51f111aa20064958b264d0cf28 100644 (file)
@@ -286,7 +286,14 @@ static void type_initialize(TypeImpl *ti)
     if (ti->instance_size == 0) {
         ti->abstract = true;
     }
-
+    if (type_is_ancestor(ti, type_interface)) {
+        assert(ti->instance_size == 0);
+        assert(ti->abstract);
+        assert(!ti->instance_init);
+        assert(!ti->instance_post_init);
+        assert(!ti->instance_finalize);
+        assert(!ti->num_interfaces);
+    }
     ti->class = g_malloc0(ti->class_size);
 
     parent = type_get_parent(ti);