]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
A vdbe stack element might have a string value even after a call to
authordrh <drh@noemail.net>
Wed, 3 Mar 2004 01:51:24 +0000 (01:51 +0000)
committerdrh <drh@noemail.net>
Wed, 3 Mar 2004 01:51:24 +0000 (01:51 +0000)
Integerify().  Ticket #641. (CVS 1283)

FossilOrigin-Name: 3cac4b7b526d6c5dbf394009b534707bcb65b0da

manifest
manifest.uuid
src/vdbe.c
test/expr.test

index 8465fa4fba414b2f09ec07cb7f5b524a1f79ce80..5747c954e674b90b8deb9cad5ae1968704970dcc 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Make\ssure\sa\sLIMIT\sclause\son\sa\sSELECT\scleans\sup\sthe\svdbe\sstack\sso\sthat\sif\sit\noccurs\sinside\sa\strigger,\sit\swon't\scause\sa\sstack\soverflow.\s\sTicket\s#640.\s(CVS\s1282)
-D 2004-03-02T18:37:41
+C A\svdbe\sstack\selement\smight\shave\sa\sstring\svalue\seven\safter\sa\scall\sto\nIntegerify().\s\sTicket\s#641.\s(CVS\s1283)
+D 2004-03-03T01:51:25
 F Makefile.in afc6c0377773421633e592347097ad036eef6aeb
 F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
 F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
@@ -61,7 +61,7 @@ F src/trigger.c a9927b57c865b6f3df3fb5e40c9824d722660ded
 F src/update.c 4c50328ebc127852bde8e2950eb8933234802c21
 F src/util.c 122bc174f6c8c2eb6a9127d9f13c4c74f83b85e4
 F src/vacuum.c db5f58cb53c8c79169d74bc0413e6d7e185ac532
-F src/vdbe.c af187d86cb1bcc1ead227245350d1693c28c77a2
+F src/vdbe.c 7c33f761fdc799633468766fb53eda4301daa6b3
 F src/vdbe.h ac987945e4dd6f987bca534c6005899f089fc270
 F src/vdbeInt.h b40ff02ce39fd076e6ff3369e19c1bbfe1986682
 F src/vdbeaux.c e2cdd1ab63604a390612c73e26bdd2ef910e9438
@@ -85,7 +85,7 @@ F test/copy.test f07ea8d60878da7a67416ab62f78e9706b9d3c45
 F test/crashtest1.c 09c1c7d728ccf4feb9e481671e29dda5669bbcc2
 F test/date.test aed5030482ebc02bd8d386c6c86a29f694ab068d
 F test/delete.test 92256384f1801760180ded129f7427884cf28886
-F test/expr.test c4cc292d601019c2f2ce95093caaa5d10284b105
+F test/expr.test ad985242e140f87eeef329d98257b8369a2066dc
 F test/fkey1.test d65c824459916249bee501532d6154ddab0b5db7
 F test/format3.test 149cc166c97923fa60def047e90dd3fb32bba916
 F test/func.test 000515779001ac6899eec4b54e65c6e2501279d4
@@ -188,7 +188,7 @@ F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
 F www/tclsqlite.tcl b9271d44dcf147a93c98f8ecf28c927307abd6da
 F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
 F www/whentouse.tcl a8335bce47cc2fddb07f19052cb0cb4d9129a8e4
-P 76d42921a475c531a77677c3fe73b6da265a878d
-R dd8609f48345c006180d07e7ef0d5734
+P 5aaa2939baa972231def086ed5f9d9ba63302532
+R d722781e30098df56cdb3e08d2d9a7bf
 U drh
-Z d1aff38fcd9f7647a8267e5f4641096b
+Z b4ad96d33af4159614ecafeca0eb02b2
index 5609352d26a5d9f17fef2af440d0021a7bec258f..3ebffecc138dfa10cdd678c324c10b0a444c9782 100644 (file)
@@ -1 +1 @@
-5aaa2939baa972231def086ed5f9d9ba63302532
\ No newline at end of file
+3cac4b7b526d6c5dbf394009b534707bcb65b0da
\ No newline at end of file
index bbbf9404610e921fcbb01109a2f8b0b17171f289..0d3fb43e6f86f5e0cff4d4817f2381ded8a6fff0 100644 (file)
@@ -43,7 +43,7 @@
 ** in this file for details.  If in doubt, do not deviate from existing
 ** commenting and indentation practices when changing or adding code.
 **
-** $Id: vdbe.c,v 1.267 2004/02/22 17:49:34 drh Exp $
+** $Id: vdbe.c,v 1.268 2004/03/03 01:51:25 drh Exp $
 */
 #include "sqliteInt.h"
 #include "os.h"
@@ -1179,8 +1179,9 @@ case OP_ShiftRight: {
   assert( (pTos->flags & MEM_Dyn)==0 );
   assert( (pNos->flags & MEM_Dyn)==0 );
   pTos--;
+  Release(pTos);
   pTos->i = a;
-  assert( pTos->flags==MEM_Int );
+  pTos->flags = MEM_Int;
   break;
 }
 
@@ -1700,8 +1701,9 @@ case OP_Not: {
   assert( pTos>=p->aStack );
   if( pTos->flags & MEM_Null ) break;  /* Do nothing to NULLs */
   Integerify(pTos);
-  assert( pTos->flags==MEM_Int );
+  Release(pTos);
   pTos->i = !pTos->i;
+  pTos->flags = MEM_Int;
   break;
 }
 
@@ -1715,8 +1717,9 @@ case OP_BitNot: {
   assert( pTos>=p->aStack );
   if( pTos->flags & MEM_Null ) break;  /* Do nothing to NULLs */
   Integerify(pTos);
-  assert( pTos->flags==MEM_Int );
+  Release(pTos);
   pTos->i = ~pTos->i;
+  pTos->flags = MEM_Int;
   break;
 }
 
@@ -2299,7 +2302,7 @@ case OP_SetCookie: {
     aMeta[1+pOp->p2] = pTos->i;
     rc = sqliteBtreeUpdateMeta(db->aDb[pOp->p1].pBt, aMeta);
   }
-  assert( pTos->flags==MEM_Int );
+  Release(pTos);
   pTos--;
   break;
 }
@@ -3767,7 +3770,7 @@ case OP_ListWrite: {
   }
   Integerify(pTos);
   pKeylist->aKey[pKeylist->nUsed++] = pTos->i;
-  assert( pTos->flags==MEM_Int );
+  Release(pTos);
   pTos--;
   break;
 }
index 0d0c6e2aec8bac81ecc12c264c13ecb2984921e7..be91a7481388ec6d97eb719d806b3710a0dea884 100644 (file)
@@ -11,7 +11,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this file is testing expressions.
 #
-# $Id: expr.test,v 1.30 2003/09/30 01:54:15 drh Exp $
+# $Id: expr.test,v 1.31 2004/03/03 01:51:25 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -68,7 +68,9 @@ test_expr expr-1.39 {i1=1} {+i1} {1}
 test_expr expr-1.40 {i1=1, i2=2} {+(i2+i1)} {3}
 test_expr expr-1.41 {i1=1, i2=2} {-(i2+i1)} {-3}
 test_expr expr-1.42 {i1=1, i2=2} {i1|i2} {3}
+test_expr expr-1.42b {i1=1, i2=2} {4|2} {6}
 test_expr expr-1.43 {i1=1, i2=2} {i1&i2} {0}
+test_expr expr-1.43b {i1=1, i2=2} {4&5} {4}
 test_expr expr-1.44 {i1=1} {~i1} {-2}
 test_expr expr-1.45 {i1=1, i2=3} {i1<<i2} {8}
 test_expr expr-1.46 {i1=32, i2=3} {i1>>i2} {4}