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