At Wed, 13 Mar 2019 19:37:45 +1300, David Rowley <david.row...@2ndquadrant.com> wrote in <cakjs1f_6qdqj9m2h0jf4brkzvlpfc7o9e+mxdxrq0wgv0z1...@mail.gmail.com> > On Wed, 13 Mar 2019 at 17:20, Kyotaro HORIGUCHI > <horiguchi.kyot...@lab.ntt.co.jp> wrote: > > bms_member_index seems working differently than maybe expected. > > > > bms_member_index((2, 4), 0) => 0, (I think) should be -1 > > bms_member_index((2, 4), 1) => 0, should be -1 > > bms_member_index((2, 4), 2) => 0, should be 0 > > bms_member_index((2, 4), 3) => 1, should be -1 > > bms_member_index((2, 4), 4) => 1, should be 1 > > bms_member_index((2, 4), 5) => 2, should be -1 > > bms_member_index((2, 4), 6) => 2, should be -1 > > ... > > bms_member_index((2, 4), 63) => 2, should be -1 > > bms_member_index((2, 4), 64) => -1, correct > > > > It works correctly only when x is a member - the way the function > > is maybe actually used in this patch -, or needs to change the > > specifiction (or the comment) of the function. > > Looks like: > > + if (wordnum >= a->nwords) > + return -1; > > should be: > > + if (wordnum >= a->nwords || > + (a->word[wordnum] & ((bitmapword) 1 << bitnum)) == 0) > + return -1;
Yeah, seems right. regards. -- Kyotaro Horiguchi NTT Open Source Software Center