ID Number: Q32285
4.00 5.00 5.10 6.00 6.00a 6.00ax 7.00
MS-DOS
Summary:
In Microsoft C versions 5.0, 5.1, 6.0, 6.0a, 6.0ax, and C/C++ version
7.0, when compiling a program under a Novell network, the following
problems may occur:
- A command-line error message
- A stack overflow
- A compiler hang
- In programs created with C version 4.0 and LINK version 3.51, the
"Error 2003 : integer divide by zero" error
More Information:
This is not a problem with the Microsoft C Compiler, nor is it an
error on your part. The problem exists in the way Novell networking
software handles the EXEC function, which is one of the MS-DOS
interrupt 21h functions used by the CL and MSC programs to start each
of the compiler passes.
Contact your Novell dealer about this problem; there should be a patch
available. Novell has stated this problem has been corrected in
versions 2.10 and later.
Novell's network emulates MS-DOS; the problem arises from incorrect
emulation of the MS-DOS int 21H function 4BH (EXEC program) call. The
Novell network assumes the calling program will save SS:SP before the
call, which is necessary on MS-DOS versions 2.x. It is not necessary,
however, to save the registers on MS-DOS versions 3.x.
The C compiler checks to see what version of MS-DOS it is running on;
if you are running MS-DOS versions 2.x, save SS:SP; if you are running
MS-DOS versions 3.x (which is what Novell presents itself as) do not
save SS:SP. The network destroys those registers on the call even
though this behavior is unlike MS-DOS versions 3.x.
Additional reference words: 6.0 6.00 6.0a 6.00a 6.0ax 6.00ax 7.00