[pacman-dev] INFRQ_* confusion

Aaron Griffin aaronmgriffin at gmail.com
Wed Feb 28 14:25:08 EST 2007

On 2/28/07, Nagy Gabor <ngaba at petra.hos.u-szeged.hu> wrote:
> As I see, the author thinks of inforeq as exactly one bit is set to 1.
> However, if inforeq=0xFF and infolevel!=0, this is a bug. And if
> inforeq=0, this condition is never true.

There is a bug here, but it's not what you're explaining.
info->infolevel is |= to the new inforeq flags.  This makes the and
process work UNLESS infolevel is a composite (more than one flag).

The real bug is here:
- if(info->infolevel & inforeq) {
+ if(inforeq ^= (info->infolevel & inforeq)) {

for example:
info->infolevel == 1011
inforeq == 0111
& result == 0011 (so something is already loaded)
^= result == 0100 (exactly what we want, the missing piece)

More information about the pacman-dev mailing list