Follow-up Comment #1, bug #20495 (project make):

There seems to be a change within the Microsoft Visual C++ Runtime between
Microsoft Visual Studio .NET (aka 2002) and Microsoft Visual Studio 2005. I
have no access to Microsoft Visual Studio 2003 so I can't prove if this
behavior was introduced earlier.

Microsoft Visual Studio .NETVc7crtsrcclose.c

/* validate file handle */
if ( ((unsigned)fh >= (unsigned)_nhandle) ||
     !(_osfile(fh) & FOPEN) )
 {
        /* bad file handle, set errno and abort */
        errno = EBADF;
        _doserrno = 0;
        return -1;
}

Microsoft Visual Studio 8VCcrtsrcclose.c

/* validate file handle */
_CHECK_FH_CLEAR_OSSERR_RETURN( fh, EBADF, -1 );
_VALIDATE_CLEAR_OSSERR_RETURN((fh >= 0 && (unsigned)fh < (unsigned)_nhandle),
EBADF, -1);
_VALIDATE_CLEAR_OSSERR_RETURN((_osfile(fh) & FOPEN), EBADF, -1);

Anyway, closing the file handle -1 is definitely a bug, which was ignored by
earlier versions of the Microsoft libraries (in fact it was reported by the
return code of close() which is *explicitly* ignored by the caller within
function.c).

Regards, Stefan

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?20495>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/



_______________________________________________
Bug-make mailing list
Bug-make@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-make

Reply via email to