Yes. The code should be:
if (isset($aSubstituteValues[$s_name]) &&
if (IsFieldSet($s_name,$aSubstituteValues) &&
Both function do not check the array given in the function parameter (here $aSubstituteValues) if FILEUPLOAD is set.
Not quite true. Both functions do check the array in the function parameter ($aSubstituteValues) regardless of the setting of FILEUPLOAD.
The problem is that IsFieldSet and TestFieldEmpty try to cope with "fields" of any type, including file upload fields.
Originally, they didn't and only dealt with non-file fields. Software evolution often causes little problems like this.
Unfortunately, PHP provides some fields in a different array. File upload fields are in a different array to all other fields, and this makes coding quite difficult. Plus, you add in the option of disabling file uploads.Don't know if it's wroth a fix, because it doesn't lead to an error... but the two functions are really bad software design, which leads to this issue.
Anyway, easily fixed.
Unfortunately, I've never seen these error messages out of PHP, otherwise the code would have been corrected earlier. Perhaps a new version of PHP is behaving differently.