On Wed, Sep 08, 2004 at 11:53:30AM -0400, Matt Wilson wrote:
> 
> That's not the solution.  Your btree cursor (and other pointers) are
> being truncated:

Here's a patch to correct this.  There are also some cosmetic changes
to reduce warnings on 64 bit platforms.  The patch may need to be
modified to keep from breaking Windows.  Probably making more
functions like getDbPointer() and getStmtPointer() would be a good
idea.

Cheers,

Matt

Index: src/btree.c
===================================================================
RCS file: /sqlite/sqlite/src/btree.c,v
retrieving revision 1.188
diff -u -r1.188 btree.c
--- src/btree.c 5 Sep 2004 00:33:43 -0000       1.188
+++ src/btree.c 8 Sep 2004 18:08:35 -0000
@@ -1404,8 +1404,8 @@
   for(pCur=pBt->pCursor; pCur; pCur=pCur->pNext){
     MemPage *pPage = pCur->pPage;
     char *zMode = pCur->wrFlag ? "rw" : "ro";
-    printf("CURSOR %08x rooted at %4d(%s) currently at %d.%d%s\n",
-       (int)pCur, pCur->pgnoRoot, zMode,
+    printf("CURSOR %#xl rooted at %4d(%s) currently at %d.%d%s\n",
+       (long)pCur, (int) pCur->pgnoRoot, zMode,
        pPage ? pPage->pgno : 0, pCur->idx,
        pCur->isValid ? "" : " eof"
     );
Index: src/pager.c
===================================================================
RCS file: /sqlite/sqlite/src/pager.c,v
retrieving revision 1.162
diff -u -r1.162 pager.c
--- src/pager.c 2 Sep 2004 14:57:08 -0000       1.162
+++ src/pager.c 8 Sep 2004 18:08:37 -0000
@@ -305,8 +305,8 @@
     static int cnt = 0;
     if( !pager3_refinfo_enable ) return;
     printf(
-       "REFCNT: %4d addr=0x%08x nRef=%d\n",
-       p->pgno, (int)PGHDR_TO_DATA(p), p->nRef
+       "REFCNT: %4d addr=%#lx nRef=%d\n",
+       p->pgno, (long)PGHDR_TO_DATA(p), p->nRef
     );
     cnt++;   /* Something to set a breakpoint on */
   }
@@ -3169,8 +3169,8 @@
   PgHdr *pPg;
   for(pPg=pPager->pAll; pPg; pPg=pPg->pNextAll){
     if( pPg->nRef<=0 ) continue;
-    printf("PAGE %3d addr=0x%08x nRef=%d\n", 
-       pPg->pgno, (int)PGHDR_TO_DATA(pPg), pPg->nRef);
+    printf("PAGE %3d addr=%#xl nRef=%d\n", 
+       pPg->pgno, (long) PGHDR_TO_DATA(pPg), pPg->nRef);
   }
 }
 #endif
Index: src/table.c
===================================================================
RCS file: /sqlite/sqlite/src/table.c,v
retrieving revision 1.17
diff -u -r1.17 table.c
--- src/table.c 6 Sep 2004 17:24:13 -0000       1.17
+++ src/table.c 8 Sep 2004 18:08:38 -0000
@@ -31,7 +31,7 @@
   int nAlloc;
   int nRow;
   int nColumn;
-  int nData;
+  long nData;
   int rc;
 } TabResult;
 
Index: src/test2.c
===================================================================
RCS file: /sqlite/sqlite/src/test2.c,v
retrieving revision 1.24
diff -u -r1.24 test2.c
--- src/test2.c 22 Jul 2004 01:19:35 -0000      1.24
+++ src/test2.c 8 Sep 2004 18:08:38 -0000
@@ -88,7 +88,7 @@
   }
   sqlite3pager_set_cachesize(pPager, nPage);
   sqlite3pager_set_pagesize(pPager, test_pagesize);
-  sprintf(zBuf,"0x%x",(int)pPager);
+  sprintf(zBuf,"%p",pPager);
   Tcl_AppendResult(interp, zBuf, 0);
   return TCL_OK;
 }
@@ -111,7 +111,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   rc = sqlite3pager_close(pPager);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -138,7 +138,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   rc = sqlite3pager_rollback(pPager);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -165,7 +165,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   rc = sqlite3pager_commit(pPager);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -192,7 +192,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   rc = sqlite3pager_stmt_begin(pPager);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -219,7 +219,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   rc = sqlite3pager_stmt_rollback(pPager);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -246,7 +246,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   rc = sqlite3pager_stmt_commit(pPager);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -273,7 +273,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   a = sqlite3pager_stats(pPager);
   for(i=0; i<9; i++){
     static char *zName[] = {
@@ -306,7 +306,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   sprintf(zBuf,"%d",sqlite3pager_pagecount(pPager));
   Tcl_AppendResult(interp, zBuf, 0);
   return TCL_OK;
@@ -333,14 +333,14 @@
        " ID PGNO\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &pgno) ) return TCL_ERROR;
   rc = sqlite3pager_get(pPager, pgno, &pPage);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
     return TCL_ERROR;
   }
-  sprintf(zBuf,"0x%x",(int)pPage);
+  sprintf(zBuf,"%p",(long)pPage);
   Tcl_AppendResult(interp, zBuf, 0);
   return TCL_OK;
 }
@@ -366,11 +366,11 @@
        " ID PGNO\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPager) != 1 ) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &pgno) ) return TCL_ERROR;
   pPage = sqlite3pager_lookup(pPager, pgno);
   if( pPage ){
-    sprintf(zBuf,"0x%x",(int)pPage);
+    sprintf(zBuf,"%p",pPage);
     Tcl_AppendResult(interp, zBuf, 0);
   }
   return TCL_OK;
@@ -394,7 +394,7 @@
        " PAGE\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPage) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPage) != 1 ) return TCL_ERROR;
   rc = sqlite3pager_unref(pPage);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -421,7 +421,7 @@
        " PAGE\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPage) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPage) != 1 ) return TCL_ERROR;
   memcpy(zBuf, pPage, sizeof(zBuf));
   Tcl_AppendResult(interp, zBuf, 0);
   return TCL_OK;
@@ -445,7 +445,7 @@
        " PAGE\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPage) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPage) != 1 ) return TCL_ERROR;
   sprintf(zBuf, "%d", sqlite3pager_pagenumber(pPage));
   Tcl_AppendResult(interp, zBuf, 0);
   return TCL_OK;
@@ -469,7 +469,7 @@
        " PAGE DATA\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pPage) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pPage) != 1 ) return TCL_ERROR;
   rc = sqlite3pager_write(pPage);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
Index: src/test3.c
===================================================================
RCS file: /sqlite/sqlite/src/test3.c,v
retrieving revision 1.50
diff -u -r1.50 test3.c
--- src/test3.c 23 Jul 2004 00:01:39 -0000      1.50
+++ src/test3.c 8 Sep 2004 18:08:41 -0000
@@ -102,7 +102,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   rc = sqlite3BtreeClose(pBt);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -129,7 +129,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   rc = sqlite3BtreeBeginTrans(pBt, 1);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -156,7 +156,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   rc = sqlite3BtreeRollback(pBt);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -183,7 +183,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   rc = sqlite3BtreeCommit(pBt);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -210,7 +210,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   rc = sqlite3BtreeBeginStmt(pBt);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -237,7 +237,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   rc = sqlite3BtreeRollbackStmt(pBt);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -264,7 +264,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   rc = sqlite3BtreeCommitStmt(pBt);
   if( rc!=SQLITE_OK ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -292,7 +292,7 @@
        " ID FLAGS\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &flags) ) return TCL_ERROR;
   rc = sqlite3BtreeCreateTable(pBt, &iTable, flags);
   if( rc!=SQLITE_OK ){
@@ -323,7 +323,7 @@
        " ID TABLENUM\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR;
   rc = sqlite3BtreeDropTable(pBt, iTable);
   if( rc!=SQLITE_OK ){
@@ -352,7 +352,7 @@
        " ID TABLENUM\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR;
   rc = sqlite3BtreeClearTable(pBt, iTable);
   if( rc!=SQLITE_OK ){
@@ -381,7 +381,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   for(i=0; i<SQLITE_N_BTREE_META; i++){
     char zBuf[30];
     unsigned int v;
@@ -419,7 +419,7 @@
        " ID METADATA...\" (METADATA is ", zBuf, " integers)", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   for(i=1; i<SQLITE_N_BTREE_META; i++){
     if( Tcl_GetInt(interp, argv[i+2], &aMeta[i]) ) return TCL_ERROR;
   }
@@ -453,7 +453,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &iPage) ) return TCL_ERROR;
   rc = sqlite3BtreePageDump(pBt, iPage, 0);
   if( rc!=SQLITE_OK ){
@@ -483,7 +483,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &iPage) ) return TCL_ERROR;
   rc = sqlite3BtreePageDump(pBt, iPage, 1);
   if( rc!=SQLITE_OK ){
@@ -513,7 +513,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   a = sqlite3pager_stats(sqlite3BtreePager(pBt));
   for(i=0; i<9; i++){
     static char *zName[] = {
@@ -546,7 +546,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   sqlite3pager_refdump(sqlite3BtreePager(pBt));
   return TCL_OK;
 }
@@ -575,7 +575,7 @@
        " ID ROOT ...\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   nRoot = argc-2;
   aRoot = malloc( sizeof(int)*(argc-2) );
   for(i=0; i<argc-2; i++){
@@ -607,7 +607,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   sqlite3BtreeCursorList(pBt);
   return SQLITE_OK;
 }
@@ -635,7 +635,7 @@
        " ID TABLENUM WRITEABLE\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pBt) != 1) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR;
   if( Tcl_GetBoolean(interp, argv[3], &wrFlag) ) return TCL_ERROR;
   rc = sqlite3BtreeCursor(pBt, iTable, wrFlag, 0, 0, &pCur);
@@ -643,7 +643,7 @@
     Tcl_AppendResult(interp, errorName(rc), 0);
     return TCL_ERROR;
   }
-  sprintf(zBuf,"0x%x", (int)pCur);
+  sprintf(zBuf,"%p", pCur);
   Tcl_AppendResult(interp, zBuf, 0);
   return SQLITE_OK;
 }
@@ -667,7 +667,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   rc = sqlite3BtreeCloseCursor(pCur);
   if( rc ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -697,7 +697,7 @@
        " ID KEY\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   if( sqlite3BtreeFlags(pCur) & BTREE_INTKEY ){
     int iKey;
     if( Tcl_GetInt(interp, argv[2], &iKey) ) return TCL_ERROR;
@@ -735,7 +735,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   rc = sqlite3BtreeDelete(pCur);
   if( rc ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -758,13 +758,15 @@
 ){
   BtCursor *pCur;
   int rc;
+  const char *zBuf;
 
   if( objc!=4 ){
     Tcl_WrongNumArgs(interp, 1, objv, "ID KEY DATA");
     return TCL_ERROR;
   }
 
-  if( Tcl_GetIntFromObj(interp, objv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( (zBuf = Tcl_GetString(objv[1])) == NULL ) return TCL_ERROR;
+  sscanf(zBuf, "%p", &pCur);
   if( sqlite3BtreeFlags(pCur) & BTREE_INTKEY ){
     i64 iKey;
     int len;
@@ -811,7 +813,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   rc = sqlite3BtreeNext(pCur, &res);
   if( rc ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -845,7 +847,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   rc = sqlite3BtreePrevious(pCur, &res);
   if( rc ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -878,7 +880,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   rc = sqlite3BtreeFirst(pCur, &res);
   if( rc ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -911,7 +913,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   rc = sqlite3BtreeLast(pCur, &res);
   if( rc ){
     Tcl_AppendResult(interp, errorName(rc), 0);
@@ -942,7 +944,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   sprintf(zBuf, "%d", sqlite3BtreeEof(pCur));
   Tcl_AppendResult(interp, zBuf, 0);
   return SQLITE_OK;
@@ -969,7 +971,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   sqlite3BtreeKeySize(pCur, &n);
   sprintf(zBuf, "%llu", n);
   Tcl_AppendResult(interp, zBuf, 0);
@@ -997,7 +999,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   sqlite3BtreeKeySize(pCur, &n);
   if( sqlite3BtreeFlags(pCur) & BTREE_INTKEY ){
     char zBuf2[60];
@@ -1038,7 +1040,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   sqlite3BtreeDataSize(pCur, &n);
   zBuf = malloc( n+1 );
   rc = sqlite3BtreeData(pCur, 0, n, zBuf);
@@ -1076,7 +1078,7 @@
        " ID AMT\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &n) ) return TCL_ERROR;
   sqlite3BtreeKeySize(pCur, &nKey);
   zBuf = sqlite3BtreeKeyFetch(pCur, &amt);
@@ -1114,7 +1116,7 @@
        " ID AMT\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   if( Tcl_GetInt(interp, argv[2], &n) ) return TCL_ERROR;
   sqlite3BtreeDataSize(pCur, &nData);
   zBuf = sqlite3BtreeDataFetch(pCur, &amt);
@@ -1149,7 +1151,7 @@
        " ID\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   if( sqlite3BtreeFlags(pCur) & BTREE_INTKEY ){
     n1 = 0;
   }else{
@@ -1196,7 +1198,7 @@
        " ID ?UP-CNT?\"", 0);
     return TCL_ERROR;
   }
-  if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+  if( sscanf(argv[1], "%p", &pCur) != 1) return TCL_ERROR;
   if( argc==3 ){
     if( Tcl_GetInt(interp, argv[2], &up) ) return TCL_ERROR;
   }else{
Index: src/vdbeaux.c
===================================================================
RCS file: /sqlite/sqlite/src/vdbeaux.c,v
retrieving revision 1.141
diff -u -r1.141 vdbeaux.c
--- src/vdbeaux.c       8 Sep 2004 15:09:41 -0000       1.141
+++ src/vdbeaux.c       8 Sep 2004 18:08:41 -0000
@@ -363,7 +363,7 @@
   assert( nTemp>=20 );
   switch( pOp->p3type ){
     case P3_POINTER: {
-      sprintf(zTemp, "ptr(%#x)", (int)pOp->p3);
+      sprintf(zTemp, "ptr(%#lx)", (long)pOp->p3);
       zP3 = zTemp;
       break;
     }

Reply via email to