Article: Q67779
Product(s): See article
Version(s): 6.00 6.00a | 6.00 6.00a
Operating System(s): MS-DOS | OS/2
Keyword(s): ENDUSER | buglist6.00 buglist6.00a | mspl13_c
Last Modified: 31-JAN-1991
The sample code below produces the following internal compiler errors
when compiled under different versions of the C compiler. The problem
occurs when compiled with the /Og and /Oe optimizations under the
compact and large memory models.
Under C 6.00a
-------------
file.c(11) : fatal error C1001: Internal Compiler Error
(compiler file '@(#)regMD.c:1.110', line 3047)
Contact Microsoft Product Support Services
Under C 6.00
------------
file.c(11) : fatal error C1001: Internal Compiler Error
(compiler file '@(#)regMD.c:1.110', line 3020)
Contact Microsoft Product Support Services
The following are valid workarounds for the problem:
1. Compile without the /Oe or /Og optimizations.
2. Use the #pragma optimize switch in the code to turn off the
offending optimizations for the particular function.
3. Compile under the small or medium memory models.
Sample Code
-----------
#include<string.h>
void foo (void)
{
char *o, *wp, *cp;
int c,t;
for (;;)
{
wp++;
t = wp - cp;
if (c) t=0;
if (t) strncpy (&o[c], cp, t );
c = t;
cp = wp;
}
}