1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-12-24 14:17:58 +03:00

Avoid an assertion fault that can occur with invalid UTF8 on the LENGTH()

function.  Ticket #548. (CVS 1154)

FossilOrigin-Name: 7080fc39eaf98ef7a7d1c1819603f67841f35c72
This commit is contained in:
drh
2004-01-02 13:17:48 +00:00
parent 4ec2e9612f
commit 7739630451
3 changed files with 10 additions and 12 deletions

View File

@@ -16,7 +16,7 @@
** sqliteRegisterBuildinFunctions() found at the bottom of the file.
** All other code has file scope.
**
** $Id: func.c,v 1.34 2003/12/23 02:17:35 drh Exp $
** $Id: func.c,v 1.35 2004/01/02 13:17:49 drh Exp $
*/
#include <ctype.h>
#include <math.h>
@@ -122,13 +122,11 @@ static void substrFunc(sqlite_func *context, int argc, const char **argv){
p2 = len-p1;
}
#ifdef SQLITE_UTF8
for(i=0; i<p1; i++){
assert( z[i] );
for(i=0; i<p1 && z[i]; i++){
if( (z[i]&0xc0)==0x80 ) p1++;
}
while( z[i] && (z[i]&0xc0)==0x80 ){ i++; p1++; }
for(; i<p1+p2; i++){
assert( z[i] );
for(; i<p1+p2 && z[i]; i++){
if( (z[i]&0xc0)==0x80 ) p2++;
}
while( z[i] && (z[i]&0xc0)==0x80 ){ i++; p2++; }