Gnus development mailing list
 help / color / mirror / Atom feed
* Re: [PATCH] Fix a bug with XEmacs and bignum support.
       [not found] <18793.58572.280122.113699@parhasard.net>
@ 2009-01-11 15:20 ` Reiner Steib
  2009-01-11 15:55   ` Aidan Kehoe
  0 siblings, 1 reply; 5+ messages in thread
From: Reiner Steib @ 2009-01-11 15:20 UTC (permalink / raw)
  To: Aidan Kehoe; +Cc: ding, bugs, xemacs-patches

On Sun, Jan 11 2009, Aidan Kehoe wrote:

> 2009-01-11  Aidan Kehoe  <kehoea@parhasard.net>
>
> 	* lisp/nnfolder.el (nnfolder-read-folder): 
> 	The (lsh -1 -1) trick to generate the greatest positive fixnum
> 	value doesn't work under an XEmacs with bignum support; use the
> 	most-positive-fixnum constant instead, available since GNU Emacs
> 	21.1 and XEmacs 21.1. 

most-positive-fixnum is only available in Emacs 21 when requiring CL.
But as CL is required (for ignore-errors), I think this change is
fine, so I have installed it.

> --- xemacs-packages/gnus/lisp/nnfolder.el	2006/03/16 04:18:02	1.7
> +++ xemacs-packages/gnus/lisp/nnfolder.el	2009/01/11 12:19:26
> @@ -899,7 +899,7 @@
>  	      (active (or (cadr (assoc group nnfolder-group-alist))
>  			  (cons 1 0)))
>  	      (scantime (assoc group nnfolder-scantime-alist))
> -	      (minid (lsh -1 -1))
> +	      (minid most-positive-fixnum)
>  	      maxid start end newscantime
>  	      novbuf articles newnum
>  	      buffer-read-only)

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Fix a bug with XEmacs and bignum support.
  2009-01-11 15:20 ` [PATCH] Fix a bug with XEmacs and bignum support Reiner Steib
@ 2009-01-11 15:55   ` Aidan Kehoe
  2009-01-11 17:16     ` Reiner Steib
  0 siblings, 1 reply; 5+ messages in thread
From: Aidan Kehoe @ 2009-01-11 15:55 UTC (permalink / raw)
  To: Reiner Steib; +Cc: xemacs-patches, bugs, ding


 Ar an t-aonú lá déag de mí Eanair, scríobh Reiner Steib: 

 > On Sun, Jan 11 2009, Aidan Kehoe wrote:
 > 
 > > 2009-01-11  Aidan Kehoe  <kehoea@parhasard.net>
 > >
 > > 	* lisp/nnfolder.el (nnfolder-read-folder): 
 > > 	The (lsh -1 -1) trick to generate the greatest positive fixnum
 > > 	value doesn't work under an XEmacs with bignum support; use the
 > > 	most-positive-fixnum constant instead, available since GNU Emacs
 > > 	21.1 and XEmacs 21.1. 
 > 
 > most-positive-fixnum is only available in Emacs 21 when requiring CL.

Oops, you’re right, it was included it in C just after the release. Thanks
for checking.

 > But as CL is required (for ignore-errors), I think this change is
 > fine, so I have installed it.

It’s not, though, it needs to be something like the following in that case,
since CL is available at compile time and not necessarily at runtime: 

--- /tmp/aidan/nnfolder.el.orig	2009-01-11 15:50:39.000000000 +0000
+++ /tmp/aidan/nnfolder.el	2009-01-11 15:50:16.000000000 +0000
@@ -899,7 +899,9 @@
 	      (active (or (cadr (assoc group nnfolder-group-alist))
 			  (cons 1 0)))
 	      (scantime (assoc group nnfolder-scantime-alist))
-	      (minid (lsh -1 -1))
+	      (minid (or (and (boundp 'most-positive-fixnum)
+			      most-positive-fixnum)
+			 134217727))
 	      maxid start end newscantime
 	      novbuf articles newnum
 	      buffer-read-only)

An (eval-when-compile most-positive-fixnum) isn’t appropriate, because the
compile-time constant could be from a 64-bit machine, which would silently
overflow in the Lisp reader under GNU on a 32-bit machine, and break the
algorithm.

-- 
¿Dónde estará ahora mi sobrino Yoghurtu Nghe, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?

_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches@xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Fix a bug with XEmacs and bignum support.
  2009-01-11 15:55   ` Aidan Kehoe
@ 2009-01-11 17:16     ` Reiner Steib
  2009-01-11 21:57       ` Aidan Kehoe
  2009-01-12 22:45       ` Katsumi Yamaoka
  0 siblings, 2 replies; 5+ messages in thread
From: Reiner Steib @ 2009-01-11 17:16 UTC (permalink / raw)
  To: Aidan Kehoe; +Cc: xemacs-patches, ding

On Sun, Jan 11 2009, Aidan Kehoe wrote:

>  Ar an t-aonú lá déag de mí Eanair, scríobh Reiner Steib: 
>  > most-positive-fixnum is only available in Emacs 21 when requiring CL.
>
> Oops, you’re right, it was included it in C just after the release. Thanks
> for checking.
>
>  > But as CL is required (for ignore-errors), I think this change is
>  > fine, so I have installed it.
>
> It’s not, though, it needs to be something like the following in that case,
> since CL is available at compile time and not necessarily at runtime: 
>
> --- /tmp/aidan/nnfolder.el.orig	2009-01-11 15:50:39.000000000 +0000
> +++ /tmp/aidan/nnfolder.el	2009-01-11 15:50:16.000000000 +0000
> @@ -899,7 +899,9 @@
>  	      (active (or (cadr (assoc group nnfolder-group-alist))
>  			  (cons 1 0)))
>  	      (scantime (assoc group nnfolder-scantime-alist))
> -	      (minid (lsh -1 -1))
> +	      (minid (or (and (boundp 'most-positive-fixnum)
> +			      most-positive-fixnum)
> +			 134217727))

> An (eval-when-compile most-positive-fixnum) isn’t appropriate, because the
> compile-time constant could be from a 64-bit machine, which would silently
> overflow in the Lisp reader under GNU 

s/GNU/Emacs/, please. :-)

> on a 32-bit machine, and break the algorithm.

If you need to make sure that the correct runtime value is used, I
don't understand why you hard-code 134217727?  I would have
expected...

	      (minid (or (and (boundp 'most-positive-fixnum)
			      most-positive-fixnum)
			 (lsh -1 -1)))

What am I missing?

On a 64-bit machine, I get:

,----[ M-x ielm RET ]
| ELISP> (lsh -1 -1)
| 576460752303423487
| ELISP> (emacs-version)
| "GNU Emacs 21.3.1 (x86_64-suse-linux, X toolkit, Xaw3d scroll bars)\n of 2004-1\
| 0-05 on prokofjieff"
| ELISP> (when (require 'cl) most-positive-fixnum)
| 576460752303423487
`----

When I used this machine(s) some years ago, I always compiled Gnus,
AUCTeX, BBDB, emacs-w3m, etc on a 64-bit machine and ran the compiled
Lisp code on both, 64-bit and 32-bit machines
(/usr/local/share/emacs/site-lisp shared via NFS).

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Fix a bug with XEmacs and bignum support.
  2009-01-11 17:16     ` Reiner Steib
@ 2009-01-11 21:57       ` Aidan Kehoe
  2009-01-12 22:45       ` Katsumi Yamaoka
  1 sibling, 0 replies; 5+ messages in thread
From: Aidan Kehoe @ 2009-01-11 21:57 UTC (permalink / raw)
  To: Reiner Steib; +Cc: xemacs-patches, ding


 Ar an t-aonú lá déag de mí Eanair, scríobh Reiner Steib: 

 > If you need to make sure that the correct runtime value is used, I
 > don't understand why you hard-code 134217727?  I would have
 > expected...
 > 
 > 	      (minid (or (and (boundp 'most-positive-fixnum)
 > 			      most-positive-fixnum)
 > 			 (lsh -1 -1)))
 > 
 > What am I missing?

Nothing, that’s a perfectly reasonable approach too. 

 > On a 64-bit machine, I get:
 > 
 > ,----[ M-x ielm RET ]
 > | ELISP> (lsh -1 -1)
 > | 576460752303423487
 > | ELISP> (emacs-version)
 > | "GNU Emacs 21.3.1 (x86_64-suse-linux, X toolkit, Xaw3d scroll bars)\n of 2004-1\
 > | 0-05 on prokofjieff"
 > | ELISP> (when (require 'cl) most-positive-fixnum)
 > | 576460752303423487
 > `----
 > 
 > When I used this machine(s) some years ago, I always compiled Gnus,
 > AUCTeX, BBDB, emacs-w3m, etc on a 64-bit machine and ran the compiled
 > Lisp code on both, 64-bit and 32-bit machines
 > (/usr/local/share/emacs/site-lisp shared via NFS).

I don’t know if the bug will actually produce noticeable symptoms in
practice--I was curious where the technique had been used, and I found the
code via this search:
http://www.google.com/codesearch?q=lsh\+-1\+-1+file%3A\.el
I haven’t been bitten by the bug. 

GNU Emacs certainly does silently overflow, though, writing out a 59-bit
number into byte-compiled code can provoke bugs if that code is run on a
machine where a Lisp integer is 28 bits wide. But you won’t get a
wrong-type-argument or anything of the sort, unless the sign is explicitly
checked.

-- 
¿Dónde estará ahora mi sobrino Yoghurtu Nghe, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?

_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches@xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Fix a bug with XEmacs and bignum support.
  2009-01-11 17:16     ` Reiner Steib
  2009-01-11 21:57       ` Aidan Kehoe
@ 2009-01-12 22:45       ` Katsumi Yamaoka
  1 sibling, 0 replies; 5+ messages in thread
From: Katsumi Yamaoka @ 2009-01-12 22:45 UTC (permalink / raw)
  To: ding; +Cc: Aidan Kehoe, xemacs-patches

>>>>> Reiner Steib <reinersteib+gmane@imap.cc> wrote:
> I would have expected...

> 	      (minid (or (and (boundp 'most-positive-fixnum)
> 			      most-positive-fixnum)
> 			 (lsh -1 -1)))

That looks good.  With the compiled nnfolder.el in Emacs 21 I got:

Debugger entered--Lisp error: (void-variable most-positive-fixnum)
  nnfolder-read-folder("test")
  nnfolder-possibly-change-group("test" "")
  nnfolder-request-accept-article("test" "" t)
  gnus-request-accept-article("nnfolder:test" nil t t)
  gnus-summary-move-article(nil nil nil copy)
  gnus-summary-copy-article(nil)
* call-interactively(gnus-summary-copy-article)



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2009-01-12 22:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <18793.58572.280122.113699@parhasard.net>
2009-01-11 15:20 ` [PATCH] Fix a bug with XEmacs and bignum support Reiner Steib
2009-01-11 15:55   ` Aidan Kehoe
2009-01-11 17:16     ` Reiner Steib
2009-01-11 21:57       ` Aidan Kehoe
2009-01-12 22:45       ` Katsumi Yamaoka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).