locale i isalnum() problem

Andrzej Krzysztofowicz ankry w green.mif.pg.gda.pl
Nie, 17 Mar 2002, 20:50:21 CET


> 
> 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) 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).

Nie widac zadnych istotnych modyfikacji w wywolywaniu funkcji bibliotecznych
w tej okolicy (zreszta w ogole malo jest tu modyfikacji poza formatowaniem
kodu), a zmiana jest wyrazna.

Stad moje pytanie. 

-- 
=======================================================================
  Andrzej M. Krzysztofowicz               ankry w mif.pg.gda.pl
  phone (48)(58) 347 14 61
Faculty of Applied Phys. & Math.,   Technical University of Gdansk



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