Looks pretty good here. One minor thing I noticed: the change to string_grow means that we've got an unused local variable, which the patch below gets rid of.
Simon --- string.c.old Mon Apr 15 14:55:09 2002 +++ string.c Mon Apr 15 14:59:56 2002 @@ -72,7 +72,6 @@ */ STRING * string_grow(struct Parrot_Interp * interpreter, STRING * s, INTVAL addlen) { - void * newbuf; INTVAL copysize = s->bufused; if(addlen < 0) copysize += addlen;