]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
The \xXX escape in the test_regexp.c must be followed by exactly two hex
authordrh <drh@noemail.net>
Fri, 18 Jan 2013 03:35:14 +0000 (03:35 +0000)
committerdrh <drh@noemail.net>
Fri, 18 Jan 2013 03:35:14 +0000 (03:35 +0000)
digits.

FossilOrigin-Name: 82957495aa0729468a020c2a0a45ed60019b6e07

manifest
manifest.uuid
src/test_regexp.c
test/regexp1.test

index 2204399b0a6ea84498a5882c151648ad0667a57f..40330a02fbb844bd3f23913535c240f92a230294 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Enhance\sthe\squery\splanner\sto\sexploit\stransitivity\sof\sjoin\sconstraints.
-D 2013-01-17T17:20:49.316
+C The\s\\xXX\sescape\sin\sthe\stest_regexp.c\smust\sbe\sfollowed\sby\sexactly\stwo\shex\ndigits.
+D 2013-01-18T03:35:14.887
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in a48faa9e7dd7d556d84f5456eabe5825dd8a6282
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -218,7 +218,7 @@ F src/test_osinst.c 90a845c8183013d80eccb1f29e8805608516edba
 F src/test_pcache.c a5cd24730cb43c5b18629043314548c9169abb00
 F src/test_quota.c 0e0e2e3bf6766b101ecccd8c042b66e44e9be8f5
 F src/test_quota.h 8761e463b25e75ebc078bd67d70e39b9c817a0cb
-F src/test_regexp.c 935a1bfb48c7a6857514aa9cedf6df048f8b9928
+F src/test_regexp.c b70fbbf4dca5913fe404ddf909dae92a88488d61
 F src/test_rtree.c aba603c949766c4193f1068b91c787f57274e0d9
 F src/test_schema.c 8c06ef9ddb240c7a0fcd31bc221a6a2aade58bf0
 F src/test_server.c 2f99eb2837dfa06a4aacf24af24c6affdf66a84f
@@ -669,7 +669,7 @@ F test/quote.test 215897dbe8de1a6f701265836d6601cc6ed103e6
 F test/randexpr1.tcl 40dec52119ed3a2b8b2a773bce24b63a3a746459
 F test/randexpr1.test eda062a97e60f9c38ae8d806b03b0ddf23d796df
 F test/rdonly.test c267d050a1d9a6a321de502b737daf28821a518d
-F test/regexp1.test bbcb74e1bbdc20a7c0b9b2360deda14c4df1b46a
+F test/regexp1.test 5cbb6e7122ca51260d71079cf9245b63b8f64e1a
 F test/reindex.test 44edd3966b474468b823d481eafef0c305022254
 F test/releasetest.mk 2eced2f9ae701fd0a29e714a241760503ccba25a
 F test/releasetest.tcl 06d289d8255794073a58d2850742f627924545ce
@@ -1034,7 +1034,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381
 F tool/win/sqlite.vsix 97894c2790eda7b5bce3cc79cb2a8ec2fde9b3ac
-P c0b90d75a86b01f7fafec755cbe046c14d725341 593d67c8b0908daf7a70b2a310ed85515d384cbf
-R 19cb0000f7ea18bbcd69f74a26ccdcaa
+P 38852f158ab20bb4d7b264af987ec1538052bec3
+R 949bb425bbb85c4c863787918f541c43
 U drh
-Z bcbd2dcec0eed1962ecdbd3953e8a1f1
+Z f3f2e37133d258307d52a0baf870b3d9
index 9f3bb32f26ff763dc5ccc9d123c77e1eef084697..82e8a50f878008a9606f3d06766c62586deec89c 100644 (file)
@@ -1 +1 @@
-38852f158ab20bb4d7b264af987ec1538052bec3
\ No newline at end of file
+82957495aa0729468a020c2a0a45ed60019b6e07
\ No newline at end of file
index c0361f17d3366eccfc0fee26948136ef3b6c09a7..600043e9cd3be3bd81e74616404618a5ab8a5786 100644 (file)
@@ -26,7 +26,7 @@
 **     \c      Character c where c is one of \{}()[]|*+?.
 **     \c      C-language escapes for c in afnrtv.  ex: \t or \n
 **     \uXXXX  Where XXXX is exactly 4 hex digits, unicode value XXXX
-**     \xXXX   Where XXX is any number of hex digits, unicode value XXX
+**     \xXX    Where XX is exactly 2 hex digits, unicode value XX
 **     [abc]   Any single character from the set abc
 **     [^abc]  Any single character not in the set abc
 **     [a-z]   Any single character in the range a-z
@@ -387,9 +387,8 @@ static unsigned re_esc_char(ReCompiled *p){
   char c;
   if( p->sIn.i>=p->sIn.mx ) return 0;
   c = p->sIn.z[p->sIn.i];
-  if( c=='u' && p->sIn.i+5<p->sIn.mx ){
+  if( c=='u' && p->sIn.i+4<p->sIn.mx ){
     const unsigned char *zIn = p->sIn.z + p->sIn.i;
-    v = 0;
     if( re_hex(zIn[1],&v)
      && re_hex(zIn[2],&v)
      && re_hex(zIn[3],&v)
@@ -399,11 +398,12 @@ static unsigned re_esc_char(ReCompiled *p){
       return v;
     }
   }
-  if( c=='x' ){
-    v = 0;
-    for(i=1; p->sIn.i<p->sIn.mx && re_hex(p->sIn.z[p->sIn.i+i], &v); i++){}
-    if( i>1 ){
-      p->sIn.i += i;
+  if( c=='x' && p->sIn.i+2<p->sIn.mx ){
+    const unsigned char *zIn = p->sIn.z + p->sIn.i;
+    if( re_hex(zIn[1],&v)
+     && re_hex(zIn[2],&v)
+    ){
+      p->sIn.i += 3;
       return v;
     }
   }
index 52877f7734d604a51d3b4cc4b812edd0c770b89c..b7ec8fdeab3cf3d34a54d418e7fb705e8ef8241c 100644 (file)
@@ -197,12 +197,12 @@ do_execsql_test regexp1-2.15 {
 do_execsql_test regexp1-2.20 {
   SELECT 'abc$¢€xyz' REGEXP '^abc\u0024\u00a2\u20acxyz$',
          'abc$¢€xyz' REGEXP '^abc\u0024\u00A2\u20ACxyz$',
-         'abc$¢€xyz' REGEXP '^abc\x24\xa2\x20acxyz$'
+         'abc$¢€xyz' REGEXP '^abc\x24\xa2\u20acxyz$'
 } {1 1 1}
 do_execsql_test regexp1-2.21 {
   SELECT 'abc$¢€xyz' REGEXP '^abc[\u0024][\u00a2][\u20ac]xyz$',
          'abc$¢€xyz' REGEXP '^abc[\u0024\u00A2\u20AC]{3}xyz$',
-         'abc$¢€xyz' REGEXP '^abc[\x24][\xa2\x20ac]+xyz$'
+         'abc$¢€xyz' REGEXP '^abc[\x24][\xa2\u20ac]+xyz$'
 } {1 1 1}
 do_execsql_test regexp1-2.22 {
   SELECT 'abc$¢€xyz' REGEXP '^abc[^\u0025-X][^ -\u007f][^\u20ab]xyz$'