22fb6eb571
Some objects accidentally inherit ObjectClass instead of Object. They compile silently but may crash after downcasting. In this patch, we introduce a coccinelle script to find broken declarations and fix them manually with proper base type. Signed-off-by: Sergey Nizovtsev <snizovtsev@gmail.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
27 lines
491 B
Plaintext
27 lines
491 B
Plaintext
// Highlight object declarations that don't look like object class but
|
|
// accidentally inherit from it.
|
|
|
|
@match@
|
|
identifier obj_t, fld;
|
|
type parent_t =~ ".*Class$";
|
|
@@
|
|
struct obj_t {
|
|
parent_t fld;
|
|
...
|
|
};
|
|
|
|
@script:python filter depends on match@
|
|
obj_t << match.obj_t;
|
|
@@
|
|
is_class_obj = obj_t.endswith('Class')
|
|
cocci.include_match(not is_class_obj)
|
|
|
|
@replacement depends on filter@
|
|
identifier match.obj_t, match.fld;
|
|
type match.parent_t;
|
|
@@
|
|
struct obj_t {
|
|
* parent_t fld;
|
|
...
|
|
};
|