sqlite2/sqlite-64bit-fixes.patch

463 lines
15 KiB
Diff

--- sqlite/src/test3.c.64bit-fixes 2004-09-29 10:09:56.249551000 -0400
+++ sqlite/src/test3.c 2004-09-29 11:34:51.314336091 -0400
@@ -19,9 +19,11 @@
#include "pager.h"
#include "btree.h"
#include "tcl.h"
+#include "test-util.h"
#include <stdlib.h>
#include <string.h>
+
/*
** Interpret an SQLite error number
*/
@@ -98,7 +100,7 @@ static int btree_close(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeClose(pBt);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -125,7 +127,7 @@ static int btree_begin_transaction(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeBeginTrans(pBt);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -152,7 +154,7 @@ static int btree_rollback(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeRollback(pBt);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -179,7 +181,7 @@ static int btree_commit(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeCommit(pBt);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -207,7 +209,7 @@ static int btree_create_table(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeCreateTable(pBt, &iTable);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -237,7 +239,7 @@ static int btree_drop_table(
" ID TABLENUM\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR;
rc = sqliteBtreeDropTable(pBt, iTable);
if( rc!=SQLITE_OK ){
@@ -266,7 +268,7 @@ static int btree_clear_table(
" ID TABLENUM\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR;
rc = sqliteBtreeClearTable(pBt, iTable);
if( rc!=SQLITE_OK ){
@@ -296,7 +298,7 @@ static int btree_get_meta(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeGetMeta(pBt, aMeta);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -333,7 +335,7 @@ static int btree_update_meta(
" ID METADATA...\" (METADATA is ", zBuf, " integers)", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
for(i=0; i<SQLITE_N_BTREE_META; i++){
if( Tcl_GetInt(interp, argv[i+2], &aMeta[i]) ) return TCL_ERROR;
}
@@ -365,7 +367,7 @@ static int btree_page_dump(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
if( Tcl_GetInt(interp, argv[2], &iPage) ) return TCL_ERROR;
rc = sqliteBtreePageDump(pBt, iPage, 0);
if( rc!=SQLITE_OK ){
@@ -395,7 +397,7 @@ static int btree_tree_dump(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
if( Tcl_GetInt(interp, argv[2], &iPage) ) return TCL_ERROR;
rc = sqliteBtreePageDump(pBt, iPage, 1);
if( rc!=SQLITE_OK ){
@@ -425,7 +427,7 @@ static int btree_pager_stats(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
a = sqlitepager_stats(sqliteBtreePager(pBt));
for(i=0; i<9; i++){
static char *zName[] = {
@@ -458,7 +460,7 @@ static int btree_pager_ref_dump(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
sqlitepager_refdump(sqliteBtreePager(pBt));
return TCL_OK;
}
@@ -487,7 +489,7 @@ static int btree_integrity_check(
" ID ROOT ...\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
nRoot = argc-2;
aRoot = malloc( sizeof(int)*(argc-2) );
for(i=0; i<argc-2; i++){
@@ -524,7 +526,7 @@ static int btree_cursor(
" ID TABLENUM WRITEABLE\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pBt) ) return TCL_ERROR;
+ pBt = sqliteTextToPtr(argv[1]);
if( Tcl_GetInt(interp, argv[2], &iTable) ) return TCL_ERROR;
if( Tcl_GetBoolean(interp, argv[3], &wrFlag) ) return TCL_ERROR;
rc = sqliteBtreeCursor(pBt, iTable, wrFlag, &pCur);
@@ -556,7 +558,7 @@ static int btree_close_cursor(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeCloseCursor(pCur);
if( rc ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -586,7 +588,7 @@ static int btree_move_to(
" ID KEY\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeMoveto(pCur, argv[2], strlen(argv[2]), &res);
if( rc ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -618,7 +620,7 @@ static int btree_delete(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeDelete(pCur);
if( rc ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -647,7 +649,7 @@ static int btree_insert(
" ID KEY DATA\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeInsert(pCur, argv[2], strlen(argv[2]),
argv[3], strlen(argv[3]));
if( rc ){
@@ -680,7 +682,7 @@ static int btree_next(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeNext(pCur, &res);
if( rc ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -714,7 +716,7 @@ static int btree_prev(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreePrevious(pCur, &res);
if( rc ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -747,7 +749,7 @@ static int btree_first(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeFirst(pCur, &res);
if( rc ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -780,7 +782,7 @@ static int btree_last(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeLast(pCur, &res);
if( rc ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -812,7 +814,7 @@ static int btree_key(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
sqliteBtreeKeySize(pCur, &n);
zBuf = malloc( n+1 );
rc = sqliteBtreeKey(pCur, 0, n, zBuf);
@@ -850,7 +852,7 @@ static int btree_data(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
sqliteBtreeDataSize(pCur, &n);
zBuf = malloc( n+1 );
rc = sqliteBtreeData(pCur, 0, n, zBuf);
@@ -887,7 +889,7 @@ static int btree_payload_size(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
sqliteBtreeKeySize(pCur, &n1);
sqliteBtreeDataSize(pCur, &n2);
sprintf(zBuf, "%d", n1+n2);
@@ -927,7 +929,7 @@ static int btree_cursor_dump(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pCur) ) return TCL_ERROR;
+ pCur = sqliteTextToPtr(argv[1]);
rc = sqliteBtreeCursorDump(pCur, aResult);
if( rc ){
Tcl_AppendResult(interp, errorName(rc), 0);
--- sqlite/src/test2.c.64bit-fixes 2004-02-09 20:54:28.000000000 -0500
+++ sqlite/src/test2.c 2004-09-29 11:35:00.840257674 -0400
@@ -19,6 +19,7 @@
#include "sqliteInt.h"
#include "pager.h"
#include "tcl.h"
+#include "test-util.h"
#include <stdlib.h>
#include <string.h>
@@ -104,7 +105,7 @@ static int pager_close(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
rc = sqlitepager_close(pPager);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -131,7 +132,7 @@ static int pager_rollback(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
rc = sqlitepager_rollback(pPager);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -158,7 +159,7 @@ static int pager_commit(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
rc = sqlitepager_commit(pPager);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -185,7 +186,7 @@ static int pager_ckpt_begin(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
rc = sqlitepager_ckpt_begin(pPager);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -212,7 +213,7 @@ static int pager_ckpt_rollback(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
rc = sqlitepager_ckpt_rollback(pPager);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -239,7 +240,7 @@ static int pager_ckpt_commit(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
rc = sqlitepager_ckpt_commit(pPager);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -266,7 +267,7 @@ static int pager_stats(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
a = sqlitepager_stats(pPager);
for(i=0; i<9; i++){
static char *zName[] = {
@@ -299,7 +300,7 @@ static int pager_pagecount(
" ID\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
sprintf(zBuf,"%d",sqlitepager_pagecount(pPager));
Tcl_AppendResult(interp, zBuf, 0);
return TCL_OK;
@@ -326,7 +327,7 @@ static int page_get(
" ID PGNO\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
if( Tcl_GetInt(interp, argv[2], &pgno) ) return TCL_ERROR;
rc = sqlitepager_get(pPager, pgno, &pPage);
if( rc!=SQLITE_OK ){
@@ -359,7 +360,7 @@ static int page_lookup(
" ID PGNO\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPager) ) return TCL_ERROR;
+ pPager = sqliteTextToPtr(argv[1]);
if( Tcl_GetInt(interp, argv[2], &pgno) ) return TCL_ERROR;
pPage = sqlitepager_lookup(pPager, pgno);
if( pPage ){
@@ -387,7 +388,7 @@ static int page_unref(
" PAGE\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPage) ) return TCL_ERROR;
+ pPage = sqliteTextToPtr(argv[1]);
rc = sqlitepager_unref(pPage);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
@@ -414,7 +415,7 @@ static int page_read(
" PAGE\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPage) ) return TCL_ERROR;
+ pPage = sqliteTextToPtr(argv[1]);
memcpy(zBuf, pPage, sizeof(zBuf));
Tcl_AppendResult(interp, zBuf, 0);
return TCL_OK;
@@ -438,7 +439,7 @@ static int page_number(
" PAGE\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPage) ) return TCL_ERROR;
+ pPage = sqliteTextToPtr(argv[1]);
sprintf(zBuf, "%d", sqlitepager_pagenumber(pPage));
Tcl_AppendResult(interp, zBuf, 0);
return TCL_OK;
@@ -462,7 +463,7 @@ static int page_write(
" PAGE DATA\"", 0);
return TCL_ERROR;
}
- if( Tcl_GetInt(interp, argv[1], (int*)&pPage) ) return TCL_ERROR;
+ pPage = sqliteTextToPtr(argv[1]);
rc = sqlitepager_write(pPage);
if( rc!=SQLITE_OK ){
Tcl_AppendResult(interp, errorName(rc), 0);
--- sqlite/src/test-util.c.64bit-fixes 2004-09-29 11:33:18.838681763 -0400
+++ sqlite/src/test-util.c 2004-09-29 11:35:32.332610359 -0400
@@ -0,0 +1,47 @@
+#include <stdint.h>
+#include <assert.h>
+#include "test-util.h"
+
+/*
+** Translate a single byte of Hex into an integer.
+*/
+static int hexToInt(int h){
+ if( h>='0' && h<='9' ){
+ return h - '0';
+ }else if( h>='a' && h<='f' ){
+ return h - 'a' + 10;
+ }else if( h>='A' && h<='F' ){
+ return h - 'A' + 10;
+ }else{
+ return 0;
+ }
+}
+
+#if defined(SQLITE_TEST)
+/*
+** Convert text generated by the "%p" conversion format back into
+** a pointer.
+*/
+void *sqliteTextToPtr(const char *z){
+ void *p;
+ uint64_t v;
+ uint32_t v2;
+ if( z[0]=='0' && z[1]=='x' ){
+ z += 2;
+ }
+ v = 0;
+ while( *z ){
+ v = (v<<4) + hexToInt(*z);
+ z++;
+ }
+ if( sizeof(p)==sizeof(v) ){
+ p = *(void**)&v;
+ }else{
+ assert( sizeof(p)==sizeof(v2) );
+ v2 = (uint32_t)v;
+ p = *(void**)&v2;
+ }
+ return p;
+}
+#endif
+
--- sqlite/src/test-util.h.64bit-fixes 2004-09-29 11:33:23.513624799 -0400
+++ sqlite/src/test-util.h 2004-09-29 11:34:35.012047569 -0400
@@ -0,0 +1,6 @@
+#ifndef TEST_UTIL_H
+#define TEST_UTIL_H
+
+extern void *sqliteTextToPtr(const char *z);
+
+#endif /* TEST_UTIL_H */
--- sqlite/Makefile.in.64bit-fixes 2004-09-29 09:41:08.011929000 -0400
+++ sqlite/Makefile.in 2004-09-29 11:32:59.441768988 -0400
@@ -142,6 +142,7 @@ SRC = \
# Source code to the test files.
#
TESTSRC = \
+ $(TOP)/src/test-util.c \
$(TOP)/src/btree.c \
$(TOP)/src/func.c \
$(TOP)/src/os.c \