--- includes/form.inc	2006-06-01 10:52:26.000000000 -0500
+++ includes/form-new.inc	2006-06-02 17:02:06.000000000 -0500
@@ -210,7 +210,10 @@
       // and a textfield could return '0' and empty('0') returns TRUE so we
       // need a special check for the '0' string.
       if ($elements['#required'] && empty($elements['#value']) && $elements['#value'] !== '0') {
-        form_error($elements, t('%name field is required.', array('%name' => $elements['#title'])));
+        // One more specialized check for file type uploads, which store their value in the $_FILES array
+        if ($elements['#type'] !== 'file' || file_check_upload($elements['#parents'][0]) == false) {
+          form_error($elements, t('%name field is required.', array('%name' => $elements['#title'])));
+        }
       }
 
       // Add legal choice check if element has #options. Can be skipped, but then you must validate your own element.
