From xemacs-m  Tue Jul  1 18:58:24 1997
Received: from crystal.WonderWorks.COM (crystal.WonderWorks.com [192.203.206.1])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id SAA17891
	for <xemacs-beta@xemacs.org>; Tue, 1 Jul 1997 18:58:22 -0500 (CDT)
Received: by crystal.WonderWorks.COM 
	id QQcwjn24421; Tue, 1 Jul 1997 19:58:23 -0400 (EDT)
Date: Tue, 1 Jul 1997 19:58:23 -0400 (EDT)
Message-Id: <QQcwjn24421.199707012358@crystal.WonderWorks.COM>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
From: Kyle Jones <kyle_jones@wonderworks.com>
To: xemacs-beta@xemacs.org
Subject: Re: LOSING_BYTECODE
In-Reply-To: <87wwnazeh0.fsf@mharnois.workgroup.net>
References: <m290zsj0z4.fsf@altair.xemacs.org>
	<kig90zsz2lg.fsf@jagor.srce.hr>
	<m2g1tzoqyk.fsf@altair.xemacs.org>
	<QQcwgj03476.199707010329@crystal.WonderWorks.COM>
	<m2en9jl9rv.fsf@altair.xemacs.org>
	<QQcwgl03902.199707010356@crystal.WonderWorks.COM>
	<QQcwgn04347.199707010422@crystal.WonderWorks.COM>
	<m2vi2vcr7u.fsf@altair.xemacs.org>
	<QQcwii14807.199707011602@crystal.WonderWorks.COM>
	<87wwnazeh0.fsf@mharnois.workgroup.net>
X-Mailer: VM 6.33 under 20.3 "Athens" XEmacs  Lucid (beta10)
X-Face: /cA45WHG7jWq>(O3&Z57Y<"WsX5ddc,4c#w0F*zrV#=M
        0@~@,s;b,aMtR5Sqs"+nU.z^CSFQ9t`z2>W,S,]:[+2^
        Nbf6v4g>!&,7R4Ot4Wg{&tm=WX7P["9%a)_da48-^tGy
        ,qz]Z,Zz\{E.,]'EO+F)@$KtF&V

efs is manufacturing its own byte code.  Whee.

Here's a patch.

--- 1.1	1997/07/01 23:37:46
+++ lisp/efs/efs-ovwrt.el	1997/07/01 23:52:58
@@ -102,10 +102,19 @@
 		 (setcar ndoc-cdr (format efs-overwrite-fmt package)))))
 	    (t
 	     ;; it's an emacs19 compiled-code object
-	     (let ((new-code (append nfun nil))) ; turn it into a list
-	       (if (nthcdr 4 new-code)
-		   (setcar (nthcdr 4 new-code) ndoc-str)
-		 (setcdr (nthcdr 3 new-code) (cons ndoc-str nil)))
+	     ;;
+	     ;; XEmacs: can't use append on a compiled function
+	     ;; as the latter is no longer a vector.  Use the
+	     ;; accessor functions instead.
+	     (let ((new-code (nconc
+			      (list (compiled-function-arglist nfun)
+				    (compiled-function-instructions nfun)
+				    (compiled-function-constants nfun)
+				    (compiled-function-stack-depth nfun)
+				    ndoc-str)
+			      (if (compiled-function-interactive nfun)
+				  (list (compiled-function-interactive nfun))
+				nil))))
 	       (fset new (apply 'make-byte-code new-code))))))))
 
 

