Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/17/84; site godot.UUCP
Path: utzoo!watmath!clyde!cbosgd!ihnp4!godot!massar
From: massar@godot.UUCP (J.P. Massar)
Newsgroups: net.emacs
Subject: CCA Emacs Elisp bug fix
Message-ID: <1135@godot.UUCP>
Date: Sun, 3-Mar-85 13:48:58 EST
Article-I.D.: godot.1135
Posted: Sun Mar  3 13:48:58 1985
Date-Received: Mon, 4-Mar-85 20:41:29 EST
Distribution: net
Organization: Thinking Machines, Cambridge, MA
Lines: 56

Problem:  Doubly (or more) nested MAP calls do not work.  (just MAP, not
MAPCAR, MAPCAN, etc).

Fix:  In the file /elisp/seq.c:

*** oldseq.c	Sun Mar  3 13:26:30 1985
--- seq.c	Sun Mar  3 13:27:41 1985
***************
*** 822,827
  				} 
  				else if (is_null) {
  					min_len = 0;
  					continue;
  				} 
  				else {

--- 822,828 -----
  				} 
  				else if (is_null) {
  					min_len = 0;
+                                         ui[j-3] = -1;
  					continue;
  				} 
  				else {
***************
*** 888,894
  				rval = basic_function(BF_NREVERSE,1);
  			}
  
! 			abe_all_free_seq();
  
  			Pop_Elisp_Val;   /* pop the function object */
  

--- 889,896 -----
  				rval = basic_function(BF_NREVERSE,1);
  			}
  
!                         for (i = 0; i < nsequences; i++)
!                             if (ui[i] >= 0) abd_free_seq(ui[i]);
  
  			Pop_Elisp_Val;   /* pop the function object */
  

Also, the defined constant MAXSEQ in the file seq.h should be changed
from 4 to something more reasonable, like 10.

---------------------------------------------------------------------------

Actually, the entire iteration mechanism over sequences should be
rewritten, but the above fix at least fixes the most obvious problem
with it.
-- 
-- JP Massar, Thinking Machines Corporation, Cambridge, MA
-- ihnp4!godot!massar
-- massar@cca-unix