From 2814cdbd86389516eeea570ae12f7c2c7338d81b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2020 15:06:16 +1100 Subject: BLI_string: extract quote utility into BLI_str_escape_find_quote Duplicate logic for this exists in BLI_str_quoted_substrN, which doesn't properly support escaping. --- source/blender/makesrna/intern/rna_access.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'source/blender/makesrna/intern/rna_access.c') diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index 70b4d4204df..deedf72600a 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -4978,21 +4978,16 @@ static char *rna_path_token(const char **path, char *fixedbuf, int fixedlen, int } } else { - bool escape = false; - /* Skip the first quote. */ - len++; - p++; - while (*p && (*p != '"' || escape)) { - /* A pair of back-slashes represents a single back-slash, - * only use a single back-slash for escaping. */ - escape = (escape == false) && (*p == '\\'); - len++; - p++; + const char *p_end = BLI_str_escape_find_quote(p + 1); + if (p_end == NULL) { + /* No Matching quote. */ + return NULL; } - /* Skip the last quoted char to get the `]`. */ - len++; - p++; + p_end += 1; + + len += (p_end - p); + p = p_end; } if (*p != ']') { -- cgit v1.2.3