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