diff options
author | drh <drh@noemail.net> | 2014-07-24 16:23:51 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2014-07-24 16:23:51 +0000 |
commit | 35c3d8cc75623d1fe890c8aaaaabb174e5de8d23 (patch) | |
tree | 2e2cfdc5e4f43a0595f60d7b92f546a88d13366e /src/expr.c | |
parent | f257b4c61332fc7d64ad870e912338d0f31ef027 (diff) | |
parent | ba5b09319e2f79707bcc55a84a5f059ea0949334 (diff) | |
download | sqlite-35c3d8cc75623d1fe890c8aaaaabb174e5de8d23.tar.gz sqlite-35c3d8cc75623d1fe890c8aaaaabb174e5de8d23.zip |
Merge recent trunk changes into the sessions branch.
FossilOrigin-Name: a9db017eabdefafcda87c497e8bafa07002ac0fe
Diffstat (limited to 'src/expr.c')
-rw-r--r-- | src/expr.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/expr.c b/src/expr.c index 803d93f30..72286dfdf 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2075,7 +2075,7 @@ static void codeInteger(Parse *pParse, Expr *pExpr, int negFlag, int iMem){ i64 value; const char *z = pExpr->u.zToken; assert( z!=0 ); - c = sqlite3Atoi64(z, &value, sqlite3Strlen30(z), SQLITE_UTF8); + c = sqlite3DecOrHexToI64(z, &value); if( c==0 || (c==2 && negFlag) ){ char *zV; if( negFlag ){ value = c==2 ? SMALLEST_INT64 : -value; } @@ -2085,7 +2085,14 @@ static void codeInteger(Parse *pParse, Expr *pExpr, int negFlag, int iMem){ #ifdef SQLITE_OMIT_FLOATING_POINT sqlite3ErrorMsg(pParse, "oversized integer: %s%s", negFlag ? "-" : "", z); #else - codeReal(v, z, negFlag, iMem); +#ifndef SQLITE_OMIT_HEX_INTEGER + if( sqlite3_strnicmp(z,"0x",2)==0 ){ + sqlite3ErrorMsg(pParse, "hex literal too big: %s", z); + }else +#endif + { + codeReal(v, z, negFlag, iMem); + } #endif } } |