File tree Expand file tree Collapse file tree
main/java/org/z3950/zing/cql
test/resources/regression Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -204,7 +204,7 @@ private String generate_base_relation() throws MissingParameterException {
204204 private String generate_term () {
205205 switch (rnd .nextInt (10 )) {
206206 case 0 : return "cat" ;
207- case 1 : return "\" cat\" " ;
207+ case 1 : return "\" cat\\ \ " " ; // A term with both bare quotes and escaped quotes
208208 case 2 : return "comp.os.linux" ;
209209 case 3 : return "xml:element" ;
210210 case 4 : return "<xml.element>" ;
Original file line number Diff line number Diff line change @@ -69,19 +69,15 @@ else if (comp.equals("<>")) {
6969 //remember quote char
7070 char mark = c ;
7171 qi ++;
72- boolean escaped = false ;
7372 buf .setLength (0 ); //reset buffer
74- while (qi < ql ) {
75- if (!escaped && qs .charAt (qi ) == mark ) //terminator
76- break ;
77- if (escaped && strchr ("*?^\\ " , qs .charAt (qi ))) //no escaping for d-quote
78- buf .append ("\\ " );
79- if (!escaped && qs .charAt (qi ) == '\\' ) { //escape-char
80- escaped = true ;
73+ while (qi < ql && qs .charAt (qi ) != mark ) {
74+ if (qs .charAt (qi ) == '\\' ) { //escape-char
75+ if (qi == ql - 1 ) {
76+ break ; //unterminated
77+ }
78+ buf .append (qs .charAt (qi ));
8179 qi ++;
82- continue ;
8380 }
84- escaped = false ; //reset escape
8581 buf .append (qs .charAt (qi ));
8682 qi ++;
8783 }
Original file line number Diff line number Diff line change @@ -229,7 +229,7 @@ static String maybeQuote(String str) {
229229 str .indexOf ('/' ) != -1 ||
230230 str .indexOf ('(' ) != -1 ||
231231 str .indexOf (')' ) != -1 ) {
232- str = '"' + str .replace ( " \ " " , "\\ \" " ) + '"' ;
232+ str = '"' + str .replaceAll ( "(?<! \\ \\ ) \ " " , "\\ \\ \" " ) + '"' ;
233233 }
234234
235235 return str ;
Original file line number Diff line number Diff line change 33 <relation>
44 <value>=</value>
55 </relation>
6- <term>^cat says "fish"</term>
6+ <term>^cat says \ "fish\ "</term>
77</searchClause>
Original file line number Diff line number Diff line change 33 <relation>
44 <value>=</value>
55 </relation>
6- <term>^cat*fishdog"horse?</term>
6+ <term>^cat*fishdog\ "horse?</term>
77</searchClause>
Original file line number Diff line number Diff line change 33 <relation>
44 <value>=</value>
55 </relation>
6- <term>term \*\?\^</term>
6+ <term>te\rm \*\?\^</term>
77</searchClause>
You can’t perform that action at this time.
0 commit comments