2010/2/10 Teodor Sigaev <teo...@sigaev.ru>: >> So suppose at this point that step is the largest integer that can be >> represented... >>> >>> ! step ++; >> >> Boom. >>> >>> ! step>>= 1; > > step>>= 1; > step ++' > > Unboom?
Yeah, that'll work. >>> ! >>> ! while(step> 0) { >>> ! int i; >>> >>> ! for (i = step-1; i< nentry; i += 2 * step) >> >> And similarly here... if nentry is greater than maxint/2, then i += 2 >> * step will overflow, no? > > Agree, so > for (i = step - 1; i < nentry && i >= 0; i += step << 1 /* *2 */) I don't think you should do it this way. I can't immediately say whether it's safe on all platforms, but it's certainly not clear. Just put the test at the bottom of the loop the way I did it (after fixing whatever I screwed up). > Also, rb_free is removed per Tom's comment. Can I commit the patch? Pending the above, go for it. ...Robert -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers