summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar default2025-02-11 18:50:14 +0100
committerGravatar default2025-02-11 18:50:14 +0100
commitf58642b4396f1433f270f15a2a19e50e08179be4 (patch)
treec6b93f443e4b14f23d5a6e3de24ca61e2b6ae738
parentIn sanitize(), also accept attribute values between single quotes. (diff)
downloadsnac2-f58642b4396f1433f270f15a2a19e50e08179be4.tar.gz
snac2-f58642b4396f1433f270f15a2a19e50e08179be4.tar.xz
snac2-f58642b4396f1433f270f15a2a19e50e08179be4.zip
Added some checks to xs_regex_split_n().
-rw-r--r--xs_regex.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/xs_regex.h b/xs_regex.h
index a4db447..1e157d2 100644
--- a/xs_regex.h
+++ b/xs_regex.h
@@ -43,11 +43,13 @@ xs_list *xs_regex_split_n(const char *str, const char *rx, int count)
43 while (count > 0 && !regexec(&re, (p = str + offset), 1, &rm, offset > 0 ? REG_NOTBOL : 0)) { 43 while (count > 0 && !regexec(&re, (p = str + offset), 1, &rm, offset > 0 ? REG_NOTBOL : 0)) {
44 /* add first the leading part of the string */ 44 /* add first the leading part of the string */
45 xs *s1 = xs_str_new_sz(p, rm.rm_so); 45 xs *s1 = xs_str_new_sz(p, rm.rm_so);
46 list = xs_list_append(list, s1); 46
47 list = xs_list_append(list, xs_is_string(s1) ? s1 : "");
47 48
48 /* add now the matched text as the separator */ 49 /* add now the matched text as the separator */
49 xs *s2 = xs_str_new_sz(p + rm.rm_so, rm.rm_eo - rm.rm_so); 50 xs *s2 = xs_str_new_sz(p + rm.rm_so, rm.rm_eo - rm.rm_so);
50 list = xs_list_append(list, s2); 51
52 list = xs_list_append(list, xs_is_string(s2) ? s2 : "");
51 53
52 /* move forward */ 54 /* move forward */
53 offset += rm.rm_eo; 55 offset += rm.rm_eo;