This was likely a typo.  In its current state, it's accessing uninitialized
memory.  It looks like it's conceivable that an incorrect nextRowid could be
later used if the uninitialized value happens to be a small integer (smaller
than pC->nextRowid) and the "valid" flag therefore doesn't get set to false.

--- vdbe.c~     2005-12-19 12:42:25.000000000 -0500
+++ vdbe.c      2006-10-22 16:32:45.000000000 -0400
@@ -2937,7 +2937,7 @@
       if( pOp->p2 & OPFLAG_NCHANGE ) db->nChange++;
       if( pOp->p2 & OPFLAG_LASTROWID ) db->lastRowid = pNos->i;
       if( pOp->p2 & OPFLAG_CSCHANGE ) db->csChange++;
-      if( pC->nextRowidValid && pTos->i>=pC->nextRowid ){
+      if( pC->nextRowidValid && pNos->i>=pC->nextRowid ){
         pC->nextRowidValid = 0;
       }
     }

Cheers,

Derrell

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to