sprintf(p->aStack[4].zShort, "ptr(%#x)", (int)p->aOp[i].p3);
sprintf(p->aStack[4].zShort, "ptr(%#lx)", (long)p->aOp[i].p3);
int sqliteVdbeList(  Vdbe *p                   /* The VDBE */){  sqlite *db = p->db;  int i;  int rc = SQLITE_OK;  static char *azColumnNames[] = {     "addr", "opcode", "p1",  "p2",  "p3",      "int",  "text",   "int", "int", "text",     0  };  assert( p->popStack==0 );  assert( p->explain );  p->azColName = azColumnNames;  p->azResColumn = p->zArgv;  for(i=0; i<5; i++) p->zArgv[i] = p->aStack[i].zShort;  i = p->pc;  if( i>=p->nOp ){    p->rc = SQLITE_OK;    rc = SQLITE_DONE;  }else if( db->flags & SQLITE_Interrupt ){    db->flags &= ~SQLITE_Interrupt;    if( db->magic!=SQLITE_MAGIC_BUSY ){      p->rc = SQLITE_MISUSE;    }else{      p->rc = SQLITE_INTERRUPT;    }    rc = SQLITE_ERROR;    sqliteSetString(&p->zErrMsg, sqlite_error_string(p->rc), (char*)0);  }else{    sprintf(p->zArgv[0],"%d",i);    sprintf(p->zArgv[2],"%d", p->aOp[i].p1);    sprintf(p->zArgv[3],"%d", p->aOp[i].p2);    if( p->aOp[i].p3type==P3_POINTER ){      sprintf(p->aStack[4].zShort, "ptr(%#x)", (int)p->aOp[i].p3);      p->zArgv[4] = p->aStack[4].zShort;    }else{      p->zArgv[4] = p->aOp[i].p3;    }    p->zArgv[1] = sqliteOpcodeNames[p->aOp[i].opcode];    p->pc = i+1;    p->azResColumn = p->zArgv;    p->nResColumn = 5;    p->rc = SQLITE_OK;    rc = SQLITE_ROW;  }  return rc;}