Neal Norwitz <neal@metaslash.com> writes: > On Wed, Nov 06, 2002 at 11:04:57AM +0000, Michael Hudson wrote: > > > > So you suggest changing PySlice_GetIndicesEx(), right? > > Yes. But based on Guido's comments and some thinking, > I don't think the API should change to longs. Your > solution below make sense, but didn't work. Nuts. > > I think the better idea is to call _PyEval_SliceIndex for the step > > element of the slice too. And maybe change the latter from > > > > else if (x < -INT_MAX) > > x = 0; > > > > to > > > > else if (x < -INT_MAX) > > x = -INT_MAX; > > > > Can you test this on a 64 bit platform or shall I just check it in? > > Tested on SF compile farm (ssh to compile.sf.net), they have a very > fast Alpha. > > Here's the trimmed down diff: > > Index: Python/ceval.c (in _PyEval_SliceIndex) > @@ -3507,7 +3507,7 @@ > else if (x < -INT_MAX) > - x = 0; > + x = -INT_MAX; > *pi = x; > > Index: Objects/sliceobject.c > @@ -119,7 +119,7 @@ > if (r->step == Py_None) { > *step = 1; > } else { > - *step = PyInt_AsLong(r->step); > + if (!_PyEval_SliceIndex(r->step, step)) return -1; > if (*step == -1 && PyErr_Occurred()) { > return -1; > > But this didn't produce the correct results: > > >>> range(10)[::sys.maxint-1] > [] Wierd. Shall dig. Nice how you get warnings from the system header files on that alpha isn't it? ... Works for me! mwh@usf-cf-alpha-linux-1:~/python$ ./python Python 2.3a0 (#2, Nov 6 2002, 05:44:13) [GCC 2.95.4 20011002 (Debian prerelease)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> range(10)[::sys.maxint - 2] Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'sys' is not defined >>> import sys >>> range(10)[::sys.maxint - 2] [0] >>> Try again? Can you try playing with gdb to see what's going on? Cheers, M. -- -Dr. Olin Shivers, Ph.D., Cranberry-Melon School of Cucumber Science -- seen in comp.lang.scheme
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4