X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fnmemsdup.c;h=a0fa637ddb45b39675c3e7bff463439458eeca45;hp=fcfb074566bf704fbca7c343a39ae53fa0d4e6c1;hb=1bef37cb158d2c33a7ddf138ff299e4f96a084ae;hpb=834902a1b9db396bd9aae10fe0ae725535afecfe diff --git a/src/nmemsdup.c b/src/nmemsdup.c index fcfb074..a0fa637 100644 --- a/src/nmemsdup.c +++ b/src/nmemsdup.c @@ -91,29 +91,29 @@ void nmem_strsplit_escape(NMEM nmem, const char *delim, const char *dstr, cp++; if (!*cp) break; - cp0 = cp; - while (*cp && !strchr(delim, *cp)) - { - if (*cp == escape_char) - cp++; + } + + cp0 = cp; + while (*cp && !strchr(delim, *cp)) + { + if (*cp == escape_char) cp++; - } - if (*darray) - (*darray)[i] = nmem_strdupn(nmem, cp0, cp - cp0); - i++; + cp++; } - else + if (*darray) { - cp0 = cp; - while (*cp && !strchr(delim, *cp)) + char *dst, *src; + (*darray)[i] = nmem_strdupn(nmem, cp0, cp - cp0); + dst = src = (*darray)[i]; + for (; (*dst = *src) != '\0'; src++) { - if (*cp == escape_char) - cp++; - cp++; + if (*src != escape_char) + dst++; } - if (*darray) - (*darray)[i] = nmem_strdupn(nmem, cp0, cp - cp0); - i++; + } + i++; + if (!collapse) + { if (!*cp) break; cp++;