don't modify input string in parsedomains - surf-adblock - Surf adblock web extension
 (HTM) git clone git://git.codemadness.org/surf-adblock
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 362d380c606bf80d11d59682ec33bbe64534b50f
 (DIR) parent ab4d1e8f7ed4eafd6d1a7a99bc183944c1dc7e41
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       Date:   Mon, 18 Jul 2016 01:06:05 +0200
       
       don't modify input string in parsedomains
       
       Diffstat:
         M surf-adblock.c                      |      18 ++++++++----------
       
       1 file changed, 8 insertions(+), 10 deletions(-)
       ---
 (DIR) diff --git a/surf-adblock.c b/surf-adblock.c
       @@ -416,7 +416,7 @@ domain=...   if domain is prefixed with ~, ignore.
        multiple domains can be separated with |
        */
        static int
       -parsedomains(char *s, int sep, struct filterdomain **head)
       +parsedomains(const char *s, int sep, struct filterdomain **head)
        {
                struct filterdomain *d, *last = *head = NULL;
                char *p;
       @@ -431,12 +431,15 @@ parsedomains(char *s, int sep, struct filterdomain **head)
                        if (!*s || *s == sep)
                                break;
        
       -                if ((p = strchr(s, sep))) /* TODO: should not contain , */
       -                        *p = '\0';
       -
                        if (!(d = wecalloc(1, sizeof(struct filterdomain))))
                                return -1;
       -                if (!(d->domain = westrdup(s)))
       +                if (p = strchr(s, sep)) { /* TODO: should not contain ',' */
       +                        d->domain = westrndup(s, p - s);
       +                        s = p + 1;
       +                } else {
       +                        d->domain = westrdup(s);
       +                }
       +                if (!d->domain)
                                return -1;
                        d->inverse = inverse;
        
       @@ -444,11 +447,6 @@ parsedomains(char *s, int sep, struct filterdomain **head)
                                *head = last = d;
                        else
                                last = last->next = d;
       -
       -                if (p) {
       -                        *p = sep;
       -                        s = p + 1;
       -                }
                } while (p);
        
                return (*head != NULL);