Bug report: local & setq, 9.9.6, Windows

Notices and updates
Locked
Kazimir Majorinc
Posts: 388
Joined: Thu May 08, 2008 1:24 am
Location: Croatia
Contact:

Bug report: local & setq, 9.9.6, Windows

Post by Kazimir Majorinc »

Code: Select all

(set 'f (lambda () 
           (local (e) 
                  (setq e (map eval (args))) 
                  (println "Disco! " (string? nil) "! Punk!"))))


(f "Rock'n'roll"); Disco! ("Rock'n'roll")! Punk!

Lutz
Posts: 5289
Joined: Thu Sep 26, 2002 4:45 pm
Location: Pasadena, California
Contact:

Post by Lutz »

It's changing the value of nil when applying setf/setq on un-initialized locals defined using 'local'. This is fixed in 9.9.7. Thanks for catching this.

as a workaround use 'let' instead of 'local':

Code: Select all

(set 'f (lambda () 
     (let (e) 
           (setq e (map eval (args))) 
           (println "Disco! " (string? nil) "! Punk!"))))

(f "Rock'n'roll") => Disco! nil! Punk!

Locked