On Wed, Jan 5, 2011 at 12:11 AM, Paul Ivanov <pivanov...@gmail.com> wrote:
> Benjamin Root, on 2011-01-04 19:48, wrote:
> > 2011/1/4 Paul Ivanov <pivanov...@gmail.com>
> >
> > > Hi matplotlib developers,
> > >
> > > I was answering a question on the -users list and came across a
> > > gridspec __getitem__ bug which causes an infinite loop if the
> > > user tries to iterate over it, because getitem never did a
> > > sanity-check when given an integer key.
> > >
> > > from matplotlib import gridspec
> > > gs = gridspec.GridSpec(1,2)
> > > gs[100] # no error is given, a SubplotSpec is returned
> > > [x for x in gs] # causes infinite loop before applying patch
> > Does this patch prevent the use of negative indexes? If so, then we
> might
> > want to rethink that in order to be more consistent with numpy arrays and
> > python lists...
>
> No, it does not prevent the use of negative indexes, and ensures
> that the negative index is within the allowed bounds, so we do
> the right thing. Here's the full patch for context:
>
> lib/matplotlib/gridspec.py
> 169 else:
> 170 if key < 0:
> 171 key += total
> 172+ if key >= total or key < 0:
> 173+ raise IndexError("index out of range")
> 174 num1, num2 = key, None
>
>
> As you can see, the reason line 172 has the key < 0 check is
> because the allowed range of negative indexes gets dealt with on
> the two preceding lines. So for gs=gridspec.GridSpec(1,2);
> Both gs[-1] and gs[-2] are legal, but gs[-3] will raise an
> IndexError.
>
> --
> Paul Ivanov
> 314 address only used for lists, off-list direct email at:
> http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7
>
Ah, I see... that makes much more sense then.
Thanks for clearing that up.
Ben Root
------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and,
should the need arise, upgrade to a full multi-node Oracle RAC database
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel