From 4eed143f3ed37b7542a487e285f939c181a08502 Mon Sep 17 00:00:00 2001 From: Rainman74 Date: Tue, 17 Feb 2026 19:52:35 +0100 Subject: [PATCH] Validate block selection positions in convertall --- SRC/NPPTextFX.cpp | 75 +++++++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 32 deletions(-) diff --git a/SRC/NPPTextFX.cpp b/SRC/NPPTextFX.cpp index 705022d..8663b8f 100644 --- a/SRC/NPPTextFX.cpp +++ b/SRC/NPPTextFX.cpp @@ -3666,25 +3666,26 @@ EXTERNC unsigned extendblockspaces(char **dest,unsigned *destsz,unsigned *destle #undef lold } -EXTERNC unsigned trimtrailingspace(char *dest,unsigned *destlen) { -#define lnew 0 - unsigned n=0,lold; - char *d,*dp,*end; - if (dest) { - for(d=dest,end=dest+*destlen;d=dp && *d==' '; d--, lold++); - d++; - if (lnew != lold) { - memmovetest(d+lnew,d+lold,*destlen-(d-dest)-lold+1); - *destlen += lnew-lold; - end += lnew-lold; - n++; - } - d=memspn(d,end,"\r\n",2); - } - } +EXTERNC unsigned trimtrailingspace(char *dest,unsigned *destlen) { +#define lnew 0 + unsigned n=0,lold; + char *d,*lineend,*trimstart,*end; + if (dest) { + for(d=dest,end=dest+*destlen;dd && (trimstart[-1]==' ' || trimstart[-1]=='\t')) trimstart--; + lold=(unsigned)(lineend-trimstart); + if (lnew != lold) { + memmove(trimstart+lnew,lineend,*destlen-(unsigned)(lineend-dest)); + *destlen += lnew-lold; + end += lnew-lold; + n++; + lineend=trimstart; + } + d=memspn(lineend,end,"\r\n",2); + } + } return(n); #undef lnew } @@ -4821,15 +4822,21 @@ EXTERNC void convertall(char cmd,unsigned flags,const char *s1,const char *s2,co break; } } - if (flags&CAFLAG_BLOCKMODE /* || hidden lines */) { - lps=(unsigned *)mallocsafe(blocklines*sizeof(*lps),"convertall-bloclines"); if (!lps) break; - lpe=(unsigned *)mallocsafe(blocklines*sizeof(*lpe),"convertall-bloclines"); if (!lpe) break; - unsigned ln; for(ln=0; ln