You could always get an anti-vandal bot set up, which may be able to spot vandalism faster than any human could. Obviously it wouldn't catch everything, but it's worth a try. -- Alex (User:Majorly) I don't think a bot could get this kind of vandalism. Using a page blanking bot could be nice but most work has to be done by humans. I am happy to notice when I am patrolling new edits I get a often a edit conflict with somebody else that is also reverting the vandalism. But I am afraid not everything can be found while paroling. Does Flagged Revisions also works on images? Best regards, Huib _______________________________________________ Commons-l mailing list Comm ... @ /mailman/listinfo/commons-l Otherwise extra pointers for user types could be written. --- tools/widl/typegen.c | 30 ++++++++++++++++++------------ 1 files changed, 18 insertions(+), 12 deletions(-) diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index 7827e14..4f56bda 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -2417,27 +2417,33 @@ static unsigned int write_struct_tfs(FILE *file, type_t *type, if (fields) LIST_FOR_EACH_ENTRY(f, fields, const var_t, entry) { type_t *ft = f->type; - if (is_ptr(ft)) + switch (typegen_detect_type(ft, f->attrs, TDT_IGNORE_STRINGS)) { + case TGT_POINTER: if (is_string_type(f->attrs, ft)) write_string_tfs(file, f->attrs, ft, FALSE, f->name, tfsoff); else write_pointer_tfs(file, f->attrs, ft, type_pointer_get_ref(ft)->typestring_offset, FALSE, tfsoff); - } - else if (type_get_type(ft) == TYPE_ARRAY && type_array_is_decl_as_ptr(ft)) - { - unsigned int offset; + break; + case TGT_ARRAY: + if (type_array_is_decl_as_ptr(ft)) + { + unsigned int offset; - print_file(file, 0, "/* %d */\n", *tfsoff); + print_file(file, 0, "/* %d */\n", *tfsoff); - offset = ft->typestring_offset; - /* skip over the pointer that is written for strings, since a - * pointer has to be written in-place here */ - if (is_string_type(f->attrs, ft)) - offset += 4; - write_nonsimple_pointer(file, f->attrs, ft, FALSE, offset, tfsoff); + offset = ft->typestring_offset; + /* skip over the pointer that is written for strings, since a + * pointer has to be written in-place here */ + if (is_string_type(f->attrs, ft)) + offset += 4; + write_nonsimple_pointer(file, f->attrs, ft, FALSE, offset, tfsoff); + } + break; + default: + break; } } if (type->ptrdesc == *tfsoff)