In my fix I just removed pb from the test, i.e.
for(pa = a, pb = b; (*pa == *pb); pa++, pb++ )
Edit: Oops! This only works if t is at the end of s. This works; tested with s="abcjobxyz" and t="job"
while (*pb && (*pa == *pb))
if(pb == (b + strlen(b) -1))
Edit2: SaswatPadhi's right, you ALWAYS need to be suspicious of a single = in an expression of any type. = and == are NOT the same. if (a=b) is valid; it assigns b to a then evaluates TRUE or FALSE depending on the value of both, so it's useful in stuff like while (x=somefunc()) where somefunc returns zero when it's finished.