The original patch looks like a better option. di_key[] with no length is a flexible array member which is part of C99 not a GNU C extension. You don't need to limit it under __GNUC__ which looked gross to the vim folk and was the main objection to the patch.