stever@videovax.Tek.COM (Steven E. Rice, P.E.) (11/21/87)
A year or so ago, a sometime bug in an early version of vt100 was
traced to improper code generated by the Lattice 3.03 compiler when
it encountered a construct of the form:
FooBaz[n+1] = something;
This was fixed by the simple expedient of creating a new variable,
nplus1, and doing the following (if you don't believe me, grep init.c
for "nplus1"!).
nplus1 = n + 1;
FooBaz[nplus1] = something;
An expression with a potential for causing this problem cropped up in
vt100, version 2.7, in expand.c. A diff file to circumvent the problem
(for those who, like me, are stuck with Lattice 3.03) follows:
*** Original/expand.c Mon Oct 5 17:13:37 1987
--- expand.c Fri Nov 20 22:30:10 1987
***************
*** 293,298
{
register char *s;
int i;
struct FileLock *lock;
char temp[60];
struct FileInfoBlock *fib;
--- 293,299 -----
{
register char *s;
int i;
+ int iplus1;
struct FileLock *lock;
char temp[60];
struct FileInfoBlock *fib;
***************
*** 305,311
for (i=strlen(MyDir);
MyDir[i] != '/' && MyDir[i] != ':';
i--);
! MyDir[i+1] = '\0';
strcat(MyDir, s);
}
else if (exists(s, ':') == 0) {
--- 306,313 -----
for (i=strlen(MyDir);
MyDir[i] != '/' && MyDir[i] != ':';
i--);
! iplus1 = i + 1;
! MyDir[iplus1] = '\0';
strcat(MyDir, s);
}
else if (exists(s, ':') == 0) {
Steve Rice
-----------------------------------------------------------------------------
new: stever@videovax.tv.Tek.com
old: {decvax | hplabs | ihnp4 | uw-beaver}!tektronix!videovax!steverwalker@sas.UUCP (Doug Walker) (11/24/87)
In article <4691@videovax.Tek.COM>, stever@videovax.Tek.COM (Steven E. Rice, P.E.) writes: > (for those who, like me, are stuck with Lattice 3.03) Why are you still stuck with Lattice 3.03? Lattice's upgrade policy is very liberal, and the newly-released Lattice 4.0 is light-years ahead of 3.03. Even Lattice 3.10 is at least one light-year ahead. Go ahead, spend the $40 on the upgrade! From personal experience, my 3.10 Lattice programs shrink between 10% and 15% with NO CODE CHANGES WHATSOEVER under 4.0, and 3.10 produces much smaller executables that 3.03 did! DISCLAIMER: I work for SAS Institute Inc, which owns Lattice, Inc, but I have no professional connection with Lattice. The opinions represented here were my own the last time I checked.
acs@amdahl.amdahl.com (Tony Sumrall) (11/25/87)
In article <4691@videovax.Tek.COM> stever@videovax.Tek.COM (Steven E. Rice, P.E.) writes: >A year or so ago, a sometime bug in an early version of vt100 was >traced to improper code generated by the Lattice 3.03 compiler when >it encountered a construct of the form: > > FooBaz[n+1] = something; > >This was fixed by the simple expedient of creating a new variable, >nplus1, and doing the following (if you don't believe me, grep init.c >for "nplus1"!). Fixed in 2.8! -- Tony Sumrall acs@amdahl.com <=> amdahl!acs [ Opinions expressed herein are the author's and should not be construed to reflect the views of Amdahl Corp. ]