// GROUPS passed references
// (Message bugs/refs:1)
// From: tal@vlsi.cs.caltech.edu
// Date:     Fri, 25 Feb 94 23:55:50 -0800
// Subject:  g++-2.5.8 produces incorrect code for references
// Message-ID: <9402260755.AA27693@vlsi.cs.caltech.edu>

#include <stdio.h>

class C {
private:
   char** list;
public:
   C(char** );
   void count (int&);
};

C::C (char** l) {
   list = l;
}

void C::count (int& total) {
   if (*list == NULL)
      return;
   else {
      list++;
      count (++total); // THIS IS WHERE THE TROUBLE STARTS
   }
}

char * foo[] = {
   "one", "two", "three", NULL};

int main() {
   C c(foo);
   int i = 0;
   c.count(i);
   if (i == 3)
     printf ("PASS\n");
   else
     printf ("FAIL\n");
}
