@@ -3666,25 +3666,26 @@ EXTERNC unsigned extendblockspaces(char **dest,unsigned *destsz,unsigned *destle
36663666#undef lold
36673667}
36683668
3669- EXTERNC unsigned trimtrailingspace (char *dest,unsigned *destlen) {
3670- #define lnew 0
3671- unsigned n=0 ,lold;
3672- char *d,*dp,*end;
3673- if (dest) {
3674- for (d=dest,end=dest+*destlen;d<end; ) {
3675- dp=d;
3676- d=memcspn (d,end," \r\n " ,2 );
3677- for (d--,lold=0 ; d>=dp && *d==' ' ; d--, lold++);
3678- d++;
3679- if (lnew != lold) {
3680- memmovetest (d+lnew,d+lold,*destlen-(d-dest)-lold+1 );
3681- *destlen += lnew-lold;
3682- end += lnew-lold;
3683- n++;
3684- }
3685- d=memspn (d,end," \r\n " ,2 );
3686- }
3687- }
3669+ EXTERNC unsigned trimtrailingspace (char *dest,unsigned *destlen) {
3670+ #define lnew 0
3671+ unsigned n=0 ,lold;
3672+ char *d,*lineend,*trimstart,*end;
3673+ if (dest) {
3674+ for (d=dest,end=dest+*destlen;d<end; ) {
3675+ lineend=memcspn (d,end," \r\n " ,2 );
3676+ trimstart=lineend;
3677+ while (trimstart>d && trimstart[-1 ]==' ' ) trimstart--;
3678+ lold=(unsigned )(lineend-trimstart);
3679+ if (lnew != lold) {
3680+ memmove (trimstart+lnew,lineend,*destlen-(unsigned )(lineend-dest));
3681+ *destlen += lnew-lold;
3682+ end += lnew-lold;
3683+ n++;
3684+ lineend=trimstart;
3685+ }
3686+ d=memspn (lineend,end," \r\n " ,2 );
3687+ }
3688+ }
36883689 return (n);
36893690#undef lnew
36903691}
0 commit comments