I have written the code to speed up the new parser. The current code for `corfile_puts' uses two loops, one for `strlen' and one for `strcat'. The new code uses only a loop for the string. Besides, it preserves the NUL chars to the end (like `strcat'), necessary for the new parser. Here is the code: void corfile_puts(char *s, CORFIL *f) { char *c; int n; /* skip and count the NUL chars to the end */ for (n=0; f->p > 0 && f->body[f->p-1] == '\0'; n++, f->p--); /* append the string */ for (c = s; *c != '\0'; c++) { f->body[f->p++] = *c; if (f->p >= f->len) f->body = (char*) realloc(f->body, f->len+=100); } if (n > 0) { /* put the extra NUL chars to the end */ while(--n >= 0) { f->body[f->p++] = '\0'; if (f->p >= f->len) f->body = (char*) realloc(f->body, f->len+=100); } } f->body[f->p] = '\0'; } It passes the extensive tests (also faster). Is it good for you? tito ------------------------------------------------------------------------------ This SF email is sponsosred by: Try Windows Azure free for 90 days Click Here http://p.sf.net/sfu/sfd2d-msazure _______________________________________________ Csound-devel mailing list Csound-devel@lists.sourceforge.net