Deal with backslash escaped quotes
This commit is contained in:
		@@ -877,7 +877,13 @@ next_component_string(char * begin, char * delims, char **state)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    end = begin;
 | 
					    end = begin;
 | 
				
			||||||
    while (*end == '"') {
 | 
					    while (*end == '"') {
 | 
				
			||||||
        char * t = strchr(end + 1, '"');
 | 
					        char * t;
 | 
				
			||||||
 | 
					        while ((t = strchr(end + 1, '"')) != NULL && *(t - 1) == '\\') {
 | 
				
			||||||
 | 
					            --t;
 | 
				
			||||||
 | 
					            memmove(t, t + 1, strlen(t));
 | 
				
			||||||
 | 
					            end = t;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (t)
 | 
					        if (t)
 | 
				
			||||||
            end = ++t;
 | 
					            end = ++t;
 | 
				
			||||||
        else
 | 
					        else
 | 
				
			||||||
@@ -894,14 +900,14 @@ next_component_string(char * begin, char * delims, char **state)
 | 
				
			|||||||
    if (*end != '\0') {
 | 
					    if (*end != '\0') {
 | 
				
			||||||
        *end = '\0';
 | 
					        *end = '\0';
 | 
				
			||||||
        *state = end + 1;
 | 
					        *state = end + 1;
 | 
				
			||||||
        if (*begin == '"' && *(end - 1) == '"') {
 | 
					        if (*begin == '"' && *(end - 1) == '"' && begin + 1 < end) {
 | 
				
			||||||
            begin++; *(end - 1) = '\0';
 | 
					            begin++; *(end - 1) = '\0';
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return begin;
 | 
					        return begin;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    *state = end;
 | 
					    *state = end;
 | 
				
			||||||
    if (*begin == '"' && *(end - 1) == '"') {
 | 
					    if (*begin == '"' && *(end - 1) == '"' && begin + 1 < end) {
 | 
				
			||||||
        begin++; *(end - 1) = '\0';
 | 
					        begin++; *(end - 1) = '\0';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return begin;
 | 
					    return begin;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user