`$file` was essentially getting declared/overwritten 3 times. In lieu of this, return an array containing the error immediately instead of doing a short-circuit array key assignment on error. Rename the local variable to `$upload` and use its properties instead of creating 3 new local vars, one of which stomped the array.
See #30799.
Built from https://develop.svn.wordpress.org/trunk@30980
git-svn-id: http://core.svn.wordpress.org/trunk@30966 1a063a9b-81f0-0310-95a4-ce76da25c4cd