locale i isalnum() problem

Michal Moskal malekith w pld.org.pl
Pon, 18 Mar 2002, 11:17:53 CET


On Sun, Mar 17, 2002 at 08:50:21PM +0100, Andrzej Krzysztofowicz wrote:
> > 
> > On Sat, Mar 16, 2002 at 21:21:17 +0100, Andrzej Krzysztofowicz wrote:
> > 
> > > > czyli wywołanie isalnum(2147483646) jest nielegalne.
> > > 
> > > Ano.
> > > Czyli caly joe jest pod tym katem do przejrzenia...
> > > 
> > > Ciekawe tylko, co sie zmienilo w joe, ze zachowanie tej funkcji
> > > z wersji na wersje (2.9.6 -> 2.9.7) uleglo tak drastycznej zmianie...
> > 
> > 2147483647 to górny zakres signed long int. Wygląda jakby się coś
> > przekręciło.
> 
> Nic sie nie przekrecilo. Autorzy joe uzywaja 2147483646 (nie wiem czemu
> nazywajac ja MAXINT) 

Bo to jest MAXINT.

> w celu zwrocenia braku wartosci w funkcjach, ktore
> zazwyczaj zwracaja wartosc (np. poprzedni znak w tekscie w stosunku do
> pierwszego, albo nastepny w stosunku do ostatniego).
> Wyglada na dzialanie swiadome, choc moze nie do konca przemyslane.
> Ciekaw jestem, czemu w starszych wersjach joe isalnum(2147483646)
> zwracalo 0 niezaleznie od ustawien LANG, a w nowszych dla LANG=pl_PL zwraca
> 8 (dla LANG="" zwraca nadal 0).

Bo isalnum() odowołuje się do tablicy. Jeżeli wyjeżdżasz 2giga za
tablice różne rzeczy mogą się dziać.

-- 
: Michal Moskal :::::::: malekith/at/pld.org.pl :  GCS {C,UL}++++$ a? !tv
: PLD Linux ::::::: Wroclaw University, CS Dept :  {E-,w}-- {b++,e}>+++ h



Więcej informacji o liście dyskusyjnej pld-devel-pl