grep implementation
===

I was going through the grep.c file at http://cm.bell-labs.com/cm/cs/tpop/grep.c
If I search for regexp 
^c*
in a file which has only character
d

it will send these to match() function which will send ("c*", "d") to matchhere function
matchhere sends ('c', "\0", "d") to matchstar which in turn sends ("\0", "d") to matchhere function
This will return 1 to the main grep() function

Where am I taking the values incorrectly?