Number: 2026

Date: 30-Aug-84 10':17':58

Submitter: Sannella.PA

Source: Sannella.PA

Subject: RESETFORM now compiles differently ': binds U V W

Assigned To: 

Attn: 

Status: Fixed

In/By: 

Problem Type: Bug

Impact: Moderate

Difficulty: 

Frequency: 

Priority: Perhaps

System: Language Support

Subsystem: Compiler, Code Format

Machine: 

Disk: 

Lisp Version: 29-Aug-84 20':58':02

Source Files: 

Microcode Version: 

Memory Size: 

File Server: 

Server Software Version: 

Disposition: [was temporary mistake in compiler. Needs no release note]'
["Masinter" " 1-Sep-84 11':52':09" Attn': Status':(Open->Fixed) Machine':(1132->) Microcode% Version': Memory% Size': Disposition':]

Description: '
Today I did a total compilation of AREDIT, and some things stopped working.  I finally found the problem --- it looks like the compiler is compiling RESETFORM wrong, or at least differently than it used to.  The problem appeared to be in the code for AR.REPLACE.FIELD.VAL, as follows':'
'
(DEFINEQ'
(AR.REPLACE.FIELD.VAL'
  (LAMBDA (OBJ CH# W NEWVAL)'
        (DECLARE (SPECVARS OBJ CH# W NEWVAL))'
        (RESETFORM (RADIX 10)'
          (PROG ((STREAM (TEXTSTREAM W))'
                 (NEWVAL.NCHARS (NCHARS NEWVAL))'
                 INSERT.CH# SEL)'
.'
.'
.'
'
TEXTSTREAM broke with bad argument - NIL.'
'
Using PRINTCODE, I discovered that AR.REPLACE.FIELD.VALA0001 (the function generated by RESETFORM) contained the lines'
'
Local args':'
100':	117	110':	2	IVAR 2': W'
102':	116	112':	1	IVAR 1': V'
104':	115	114':	0	IVAR 0': W'
'
It appears that W was being bound as a localvar inside AR.REPLACE.FIELD.VALA0001.'
'
I got around the problem by renaming W -> WINDOW, but I think that this is a bug.  This function used to compile without this problem.'


Workaround: 

Test Case: '
{eris}<sannella>Lisp>AREDIT;37'
{eris}<sannella>Lisp>AREDIT.DCOM;32

Edit-By: Masinter

Edit-Date:  1-Sep-84 11':52':11