Language definitively could have helped. For example, you could have a type that could only be created with both disk and partition info filled in. Then the compiler would complain if you forgot one of them.
That would've caused this code change to fail, unless I'm missing something.
The entire structure was just memset to 0, it's not like the struct was carefully initialised.