All,

Win64 compiled with the latest patched Visual Studio 8.

I just downloaded and compiled the latest amalgamation in my project,
ran it and the program died immediately.

I've tracked it down to SQLITE_OMIT_TRACE. If I compile with this
defined, it crashes.


It's dying here

Expr.c line 2173

case TK_VARIABLE: {
      VdbeOp *pOp;
      assert( !ExprHasProperty(pExpr, EP_IntValue) );
      assert( pExpr->u.zToken!=0 );
      assert( pExpr->u.zToken[0]!=0 );
      if( pExpr->u.zToken[1]==0
         && (pOp = sqlite3VdbeGetOp(v, -1))->opcode==OP_Variable
         && pOp->p1+pOp->p3==pExpr->iTable
         && pOp->p2+pOp->p3==target
         && pOp->p4.z==0
      ){
        /* If the previous instruction was a copy of the previous unnamed
        ** parameter into the previous register, then simply increment the
        ** repeat count on the prior instruction rather than making a new
        ** instruction.
        */
        pOp->p3++;
      }else{
        sqlite3VdbeAddOp3(v, OP_Variable, pExpr->iTable, target, 1);
        if( pExpr->u.zToken[1]!=0 ){
          sqlite3VdbeChangeP4(v, -1, pExpr->u.zToken, 0);
        }
      }
      break;

I've tried both the amalgamation and the individual files method.

sqlite3VdbeGetOp is returning an invalid pointer.

SQLITE_PRIVATE VdbeOp *sqlite3VdbeGetOp(Vdbe *p, int addr){
  static VdbeOp dummy;
  assert( p->magic==VDBE_MAGIC_INIT );
  if( addr<0 ) addr = p->nOp - 1;
  assert( (addr>=0 && addr<p->nOp) || p->db->mallocFailed );
  if( p->db->mallocFailed ){
    return &dummy;
  }else{
    return &p->aOp[addr];
  }
}


This is what I was compiling:
"SELECT CF_Value FROM TB_Config WHERE CF_Section=? AND CF_Key=?;"

It's a very basic DB for configuration information.


        //
        //
        //
        HRESULT hr = Exec
        (
                "CREATE TABLE IF NOT EXISTS TB_Config ("
                "CF_Section     VARCHAR(128), "
                "CF_Key VARCHAR(128), "
                "CF_Value VARCHAR(128), "
                "CF_Age INTEGER, "
                "PRIMARY KEY (CF_Section, CF_Key) );"
        );
        if( FAILED(hr) )
        {
          ASSERT(0);
          FreeError();
        }

I can stick the old library 3.6.7 back in place and it works.
Sqlite.exe is able to access the DB with no issues.

C

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to