File tree Expand file tree Collapse file tree 1 file changed +23
-2
lines changed
Expand file tree Collapse file tree 1 file changed +23
-2
lines changed Original file line number Diff line number Diff line change @@ -53,6 +53,11 @@ pub fn ParsedQuery(comptime tmp_query: []const u8) type {
5353 var pos = 0 ;
5454 var state = .start ;
5555
56+ // This holds the starting character of the string while
57+ // state is .inside_string so that we know which type of
58+ // string we're exiting from
59+ var string_starting_character = null ;
60+
5661 var current_bind_marker_type : [256 ]u8 = undefined ;
5762 var current_bind_marker_type_pos = 0 ;
5863
@@ -75,6 +80,7 @@ pub fn ParsedQuery(comptime tmp_query: []const u8) type {
7580 },
7681 '\' ' , '"' , '[' , '`' = > {
7782 state = .inside_string ;
83+ string_starting_character = c ;
7884 buf [pos ] = c ;
7985 pos += 1 ;
8086 },
@@ -84,8 +90,23 @@ pub fn ParsedQuery(comptime tmp_query: []const u8) type {
8490 },
8591 },
8692 .inside_string = > switch (c ) {
87- '\' ' , '"' , ']' , '`' = > {
88- state = .start ;
93+ '\' ' = > {
94+ if (string_starting_character == '\' ' ) state = .start ;
95+ buf [pos ] = c ;
96+ pos += 1 ;
97+ },
98+ '"' = > {
99+ if (string_starting_character == '"' ) state = .start ;
100+ buf [pos ] = c ;
101+ pos += 1 ;
102+ },
103+ ']' = > {
104+ if (string_starting_character == '[' ) state = .start ;
105+ buf [pos ] = c ;
106+ pos += 1 ;
107+ },
108+ '`' = > {
109+ if (string_starting_character == '`' ) state = .start ;
89110 buf [pos ] = c ;
90111 pos += 1 ;
91112 },
You can’t perform that action at this time.
0 commit comments