***************************************************************************
***************************************************************************
***									***
***   This file contains the change history for the MSVC++ v4.1 C/C++	***
***   Run-Time Libraries (that is, modifications since since 4.0).	***
***   The file should always be edited at the top so that the most	***
***   recent changes are at the beginning of the file (immediately	***
***   after this comment) and the oldest changes are at the end.	***
***									***
***************************************************************************
***************************************************************************
-----------------------------------------------------------------

Fri 26-Jan-96   (BryanT)

crtw32\convert\xtoa.c, xtow.c, atox.c, wtox.c
crtw32\h\stdlib.h, tchar.h, wchar.h
libw32\msvcrt.src
        Add _i64toa, _ui64toa, _atoi64, _i64tow, _ui64tow, and _wtoi64
	for the Gibralter team.

crtw32\string\i386\*.asm
        Add .FPO directives where needed.

-----------------------------------------------------------------

Mon 22-Jan-96   (SteveSa)

crtw32\misc\dbgheap.c
	Restored call to HeapValidate() to _CrtIsValidHeapPtr().  This call
	was commented out last summer because of problems with the Debug IDE
	BVTs (tests).  Those problems cannot be reproduced.

-----------------------------------------------------------------

Fri 19-Jan-96   (GregF)

crtw32\time\tzset.c
        Added bit of code to ensure the _tzname[] strings are terminated with
        a null character. This was Speed bug 4552.

-----------------------------------------------------------------

Wed 03-Jan-96   (JamesMa)

fpw32\tran\i386\87triga.asm
        Atan2(0,0) now returns 0 (Speed bug 2176).

-----------------------------------------------------------------

Tue 02-Jan-96   (JamesMa)

crtw32\misc\dbgdel.cpp
        New file, split from dbgnew.cpp (Speed bug 3715).

crtw32\heap\setnewh.cpp
        New file, split from handler.cpp (Speed bug 4130).

crtw32\misc\dbgnew.cpp, crtw32\heap\handler.cpp

makefile, makefile.inc, srcrel\pd-b, doc\copycrt.bat,
crtw32\misc\lsources, crtw32\heap\lsources

-----------------------------------------------------------------

Mon 01-Jan-96	(BryanT)

crtw32\h\limits.h
libw32\include\limits.h
	Define LINK_MAX for POSIX

crtw32\h\wchar.h
libw32\include\wchar.h
        Don't define some types for POSIX

-----------------------------------------------------------------

Thu 28-Dec-95   (GregF)

crt\crtw32\h\stdio.h

crt\crtw32\stdio\setmaxf.c, fflush.c

crt\libw32\msvcrt.src

crt\libw32\include\stdio.h

        Fixed a rather badly broken _setmaxstdio() and a related bug in
        flsall() (see fflush.c). Also added _getmaxstdio(). This fixes SPEED
        bugs 2158 and 4327.

-----------------------------------------------------------------

Thu 21-Dec-95   (JamesMa)

crt\crtw32\convert\gcvt.c
        '.' was replaced by *__decimal_point (Speed bug 2145).

-----------------------------------------------------------------

Thu 21-Dec-95   (GregF)

crt\crtw32\string\i386\strncpy.asm
        Much faster version from Intel.

-----------------------------------------------------------------

Tue 19-Dec-95   (JamesMa)

crtw32\h\*.h, crtw32\h\sys\*.h, libw32\include\*.h, libw32\include\sys\*.h
        '#pragma once' removed from assert.h; all other occurrences
	bracketed by '#if _MSC_VER > 1000/#endif'.

-----------------------------------------------------------------

Tue 19-Dec-95   (GregF)

crt\crtw32\string\i386\strncat.asm
        Much faster version from Intel (with several bug fixes from me).

-----------------------------------------------------------------

Mon 18-Dec-95   (JamesMa)

crtw32\eh\typname.cpp
        Debug version now allocates buffer as _CRT_BLOCK.

crtw32\startup\crt0dat.c
        Doexit() can no longer recurse.

crtw32\h\*.h, crtw32\h\sys\*.h, libw32\include\*.h, libw32\include\sys\*.h
        Add '#pragma once' to all headers.

-----------------------------------------------------------------

Thu 14-Dec-95   (BryanT)

crtw32\eh\mips\trnsctrl.cpp, handlers.s, rtlmisc.s
        Fix for new 64-bit CONTEXT structures.

crtw32\helper\ppc\dtou.s
        Fix from ChuckL.

libw32\lib\dll\makefile.inc
        Add dependency on msvcrt.src.

-----------------------------------------------------------------

Wed 13-Dec-95   (SteveSa)

crt/fpw32/tran/i386/testfdiv.c -
	Change call to LoadLibrary("kernel32") to GetModuleHandle(...)
	since KERNEL32.DLL will ALWAYS be loaded.

-----------------------------------------------------------------

Wed 13-Dec-95   (GregF)

crt\crtw32\time\time.c
        Had gmt and gmt_cache switched in a key assigment, effectively
        disabling my workaround for the slow NT API. Mistake found and
        reported by Phil Lucido.

-----------------------------------------------------------------

Tue 12-Dec-95   (SteveSa)

crt/fpw32/tran/i386/testfdiv.c -
	Reorganized the multi-processor check for a Pentium with the FDIV bug
	so that the check is done only once on single-processor systems.
	Previously the test was done twice on uni-processor systems -- once at
	the beginning of the routine and once in the loop to check all CPUs.

-----------------------------------------------------------------

Thu 07-Dec-95   (SteveSa)

crt/crtw32/convert/wctomb.c
crt/crtw32/convert/wcstombs.c
crt/crtw32/h/mtdll.h
crt/crtw32/stdio/_filbuf.c
crt/crtw32/stdio/_flsbuf.c
	Fixed misspellings of _NTSUBSET_.  It was only misspelled in comments
	in the four files other than <mtdll.h>.  But there it was in an #if.

-----------------------------------------------------------------

Wed 06-Dec-95   (GregF)

crt\crtw32\string\i386\strstr.asm
        Faster version from Intel.

-----------------------------------------------------------------

Tue 05-Dec-95   (SteveSa)

crt/crtw32/lowio/cgets.c
crt/crtw32/lowio/cputs.c
crt/crtw32/lowio/getch.c
crt/crtw32/lowio/putch.c
crt/crtw32/lowio/initcon.c
	To improve DLL load time, the console I/O handles _confh and _coninpfh
	are no longer initialized at CRTL start-up but rather are initialized
	on demand.  From initial tests, this seems to speed up the loading of
	MSVCRT40.DLL by 4-20%.

	Revised Fri 08-Dec-95 to work correctly under Win32s, and to save code.

-----------------------------------------------------------------

Thu 30-Nov-95   (SteveSa)

crt/crtw32/misc/cmiscdat.c -
	VC++ 4.1 (SPEED) bug 2188 - removed obsolete comments which were
	relevant in the 16-bit world but are no longer.  Updated copyright.

-----------------------------------------------------------------

Thu 30-Nov-95   (GregF)

crt\crtw32\string\i386\strchr.asm, strlen.asm
        The new strchr() is a much faster (also fatter) version from Intel.
        The only change to strlen.asm was to align the main loop entry on
        a 16-byte boundary (for 486 and P6).

-----------------------------------------------------------------

Tue 28-Nov-95   (SteveSa)

crtw32/dos/stat.c -
	Change special case code that handles root directories (such as
	'C:/' or 'X:\') to also handle UNC names such as '//server/share/'
	or '\\server\share\'.  Note that Win32 requires the trailing slash.

-----------------------------------------------------------------

Mon 27-Nov-95   (BryanT)

crtw32\h\stdlib.h
libw32\include\stdlib.h
        Add __cdecl to _sleep/_beep/_seterrormode prototypes.

-----------------------------------------------------------------

Sun 26-Nov-95   (BryanT)

crtw32\string\stricoll.c
libw32\msvcrt.src
        Since stricmp() is merely a wrapper for strcmpi(), call strcmpi() directly
	if possible.

-----------------------------------------------------------------

Thu 16-Nov-95   (BryanT)

crtw32\crt32.nt
fpw32\fp32.nt
        Define _WIN32 for ASM files (to get proper .586 designation)

crtw32\h\cruntime.inc
        Fix POSIX build (it needs .586 also to compile string\strcat.asm)

crtw32\misc\dlllib\sources
crtw32\misc\i386\exsup.asm
        Don't link global_unwind2 into each image... Import from the CRT dll instead
        (this removes the last required reference to kernel32.dll)

crtw32\startup\mlock.c
        #pragma optimiza("y", off) is only needed when you're going to run on the
        checked version of NT 3.1...  Since the NT libs never do that, no need to
        disable it here.

fpw32\tran\i386\87fmod.asm
fpw32\tran\i386\87tran.asm
        Remove more fdiv workarounds.

-----------------------------------------------------------------

Wed 15-Nov-95   (GregF)

crtw32\time\tzset.c

        Set the year fields of dststart and dstend to -1 to ensure they
        are recomputed after a call to _tzset.

-----------------------------------------------------------------

Tue 14-Nov-95	(BryanT)

crtw32\misc\splitpat.c
        Don't use MBCS on splitpath for NTSUBSET

crtw32\startup\nt\sources
        Add crt0fp.c

fpw32\fp32.nt
fpw32\conv\fpinit.c
fpw32\tran\sources.nt
fpw32\tran\i386\87tran.asm
fpw32\tran\i386\87fmod.asm
        Don't use CRT workaround for P5 FDIV problem.  The NT run-times
	will alway run on a system that handles it.

-----------------------------------------------------------------

Tue 14-Nov-95	(GregF)

crtw32\string\i386\stricmp.asm

        Define/declare _strcmpi with a proc rather than a label directive.
        This was the last bit required to fix 2108.

crtw32\string\i386\strcat.asm

        Aligned strcat to a paragraph boundary.

-----------------------------------------------------------------

Sun 12-Nov-95	(BryanT)

crtw32\string\wcsicmp.c
crtw32\string\wcsnicmp.c
crtw32\string\wcsxfrm.c
crtw32\string\strxfrm.c
crtw32\misc\dlllib\sources
crtw32\startup\dlllib\sources

        NT build fixes

-----------------------------------------------------------------

Fri 10-Nov-95	(v-rogerl)

crt32\string\mips\strcpym.s
crt32\string\mips\strcatm.s
crt32\string\mips\memcpym.s

        Replace ALTERNATE_ENTRY with .weakext for -Gy build.

-----------------------------------------------------------------

Thu 09-Nov-95   (GregF)

crtw32\dllstuff\crtlib.c

        Changed "ISTNT" to "IsTNT".

crtw32\string\i386\memcmp.asm

        Checked in faster version from Intel. The last problem (i.e., the
        reason I had to back this out several months ago) was edi and esi
        were being pushed in the wrong order.

-----------------------------------------------------------------

Wed 08-Nov-95   (GregF)

crtw32\time\tzset.c

        Fixed typo in _isindst(). Second call to _mlock(_TIME_LOCK) should
        have been _munlock(_TIME_LOCK).

-----------------------------------------------------------------

Tue 31-Oct-95   (GregF)

crtw32\h\conio.h

        Backed out last change. The inp* and outp* functions are intrinsics
        so they cannot be _CRTIMP.

-----------------------------------------------------------------

Tue 31-Oct-95	(GregF)

crtw32\h\conio.h
libw32\msvcrt.src
        Export inp*, outp* for x86 msvcr*.dll. This was Olympus0 10299 and
        Olympus 1811.

crtw32\string\strcoll.c, stricoll.c, strncoll.c, strnicol.c, wcscoll.c
              wcsicoll.c, wcsncoll.c, wcsnicol.c

        Pass SORT_STRINGSORT flag to CompareString* API (actually, to our own
        crtCompareString*, which then passes it on to the Win32 API) so that
        characters such as the dash and apostrophe are not ignored in
	comparisons. This was Olympus0 14755.

-----------------------------------------------------------------

Fri 27-Oct-95	(v-rogerl)

fpw32\tran\mips\exptable.s
fpw32\tran\mips\logtable.s
fpw32\tran\mips\xsqrt.s

        Fix bogus mips code.  Align .rdata 8 bytes so tables that
        are entered as words can work as double values.

-----------------------------------------------------------------

Fri 27-Oct-95	(GregF)

crt\crtw32\stdio\fdopen.c

        Added check (for both Win32 and Mac builds) that the file handle
        passed to _fdopen() is open. This was Olympus0 10153.

crt\crtw32\h\stdlib.h
crt\libw32\include\stdlib.h

        #ifdef-out toupper/tolower for ANSI builds. The decls cannot be
        removed completely because they are documented (see the descripion
        of tolower and toupper in the Runtime Library Reference). The doc
        should be changed so that we may remove these decls in the future.
        This was Olympus 1314.

-----------------------------------------------------------------

Tue 24-Oct-95   (GregF)

crt\crtw32\misc\searchen.c

        Use an internal buffer to construct the full pathname from the
        environment variable value and the file name. This was OLYMPUS0 9336.


crt\crtw32\time\time.c

        Revised to minimize calls to GetTimeZoneInformation with used in a
        loop by only updating the DST status on whole minutes. This was done
        because GetTimeZoneInformation very expensive on NT 3.51.

-----------------------------------------------------------------

Tue 17-Oct-95	 (SteveSa)

crtw32/eh/mac/pmac/lowhelpr.asm
crtw32/eh/mac/pmac/trnsctrl.cpp
	Propogate GlennN's and APennell's final EH fix to the PowerMac CRTL
	(after v4.0 for Intel X86 shipped).

-----------------------------------------------------------------

Tue 17-Oct-95	 (GregF)

crtw32\convert\_mbslen.c, mbstowcs.c, mbtowc.c, tolower.c, toupper.c,
        towlower.c, towupper.c

crtw32\h\ctype.h, mtdll.h

crtw32\misc\setlocal.c

crtw32\startup\mlock.c

crtw32\string\memicmp.c, strcoll.c, stricmp.c, stricoll.c, strlwr.c,
        strncoll.c, strnicmp.c, strnicol.c, strupr.c, strxfrm.c, wcscoll.c,
        wcsicmp.c, wcsicoll.c, wcslwr.c, wcsncoll.c, wcsnicmp.c, wcsnicol.c,
        wcsupr.c, wcsxfrm.c

crtw32\string\i386\memicmp.asm, stricmp.asm, strnicmp.asm

crtw32\time\strftime.c

        Package of changes implementing a more efficient scheme for 'locking'
        locale references. The basic idea is access to locale data only has to
        be serialized if at least one thread is executing setlocale().

        Also, memicmp.asm contains a fix for Olympus 2196 (< and > returns
        are reversed for non-C locales).

-----------------------------------------------------------------

Fri 06-Oct-95	 (SteveSa)

crtw32\direct\findfile.c
crtw32\h\io.h
libw32\include\io.h

	The filespec argument to _*findfirst should be CONST char *, not just
	char *.  Also added missing underscores to func names in the comments.

	This was Olympus0 bug #13287.


crtw32\h\new.h -
	updated so that when cleansed, it matches the new.h in libw32\include.
	(added missing __cdecl in the prototype of new_handler).

crtw32\h\tchar.h -
	Fix Olympus0 bug #1175 here as well as in libw32\include\tchar.h
	(See Thu-05-Oct fixes)

libw32\include\time.h
	updated for GregF's change today for crtw32\h\time.h

-----------------------------------------------------------------

Fri 06-Oct-95	 (GregF)

crtw32\direct\findfile.c

crtw32\dos\stat.h

crtw32\h\internal.h

crtw32\lowio\fstat.h

crtw32\time\dtoxtime.c, time.c

	Package of changes to properly handle the overlapping clock times
	which occur at the transition from DST back to Standard Time.

	This was Olympus 2128.

-----------------------------------------------------------------

Fri 06-Oct-95	 (GregF)

crtw32\dllstuff\crtlib.c

crtw32\h\time.h, win32s.h

crtw32\time\dtoxtime.c, mktime.c, localtim.c, timeset.c, tzset.c

libw32\msvcrt.src

	Package of changes to fully support Win32 timezones. Main changes
	were to fix _isindst() to work with non-USA transition rules and
	to use _dstbias instead of a constant value (-3600) for the bias
	in seconds.

	This was Olympus0 3231.

-----------------------------------------------------------------

Thu 05-Oct-95    (SteveSa)

srcrel\mkfiles.sed
	Remove stdio\maketabc.c from the list of files to be copied/cleansed.
	This file should not have been released in MSVC++ v4.0.  No big deal.
	Also remove stdio\mac\initstd.c from that list.  Same story.  NBD.

srcrel\makefile
	Change the rule to create pd-b to use the v4.1 source file server
	(\\lang1\slmv4.1) instead of the v4.0 name (\\lang1\v3slm).

log.txt -> log_v40.txt
	renamed the v4.0 history file and started a new one

crtw32\lowio\getch.c -- Olympus0 Bug #2193
	removed two lines of debugging code that were commented out with //

libw32\include\tchar.h - Olympus0 Bug #1175
	__far is #defined to nothing -- should be unnecessary in 32-bit code!

makefile -
	Change the rules for the oldnames and tcmap and tcmapdll object file
	directories so that oldnames.lib and tcmap.lib and tcmapdll.lib do
	not get incorrectly rebuilt.  This occurs due to a bug in Windows NT
	v3.5x wherein sometimes a subdirectory has a creation time OLDER
	than the creation time of its parent directory.

-----------------------------------------------------------------

***************************************************************************
***************************************************************************
***									***
***  This file contains the history for MSVC++ v4.1 (relative to v4.0)	***
***  The file should always be edited at the top so that the most	***
***  recent changes are at the beginning of the file and the oldest	***
***  changes are at the end of the file.  This comment marks the end.	***
***									***
***************************************************************************
***************************************************************************

-----------------------------------------------------------------
