Check for miscompiled Tcl (CVS 204)

FossilOrigin-Name: 735d8b5c13b5e2602b37940377fced098be210c1
This commit is contained in:
drh 2001-04-06 16:13:42 +00:00
parent 5ef3872a00
commit fbc3eab85b
9 changed files with 83 additions and 30 deletions

View File

@ -1 +1 @@
1.0.29
1.0.30

View File

@ -1,9 +1,9 @@
C Version\s1.0.29\s(CVS\s474)
D 2001-04-05T16:50:00
C Check\sfor\smiscompiled\sTcl\s(CVS\s204)
D 2001-04-06T16:13:43
F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4
F Makefile.in 25791375ce9f4f5b57d4cab67f0d58d772c96451
F README 51f6a4e7408b34afa5bc1c0485f61b6a4efb6958
F VERSION fb0fbad3b7a52736cc18ea5fcf1bc6dba7b2c40c
F VERSION 2670c932365e633f8552540db172fac18bd09b3a
F configure 260d3be664b6d9b4d2d985e66b6dae1ef723c86e x
F configure.in 6940e3f88bf3d28a10c73b06ab99fd3a7e039a61
F doc/lemon.html e233a3e97a779c7a87e1bc4528c664a58e49dd47
@ -25,7 +25,7 @@ F src/ex/pg.h 23a4ac807b0546ec2bb6239ec8bd3e06926572cd
F src/ex/sizes.tcl f54bad4a2ac567624be59131a6ee42d71b41a3d7
F src/expr.c 745383609b65d504a2cc04ac4d9389e9c8e2bc80
F src/insert.c 4bc1cab84f7805d560a1417734a532843e30b762
F src/main.c d52a1c2a7a964acca87880ac925019c383b8e606
F src/main.c fe5c26620c46770539056525d8a79e3afb6e75e8
F src/pager.h 889c5cf517ad30704e295540793c893ac843fd5f
F src/parse.y 1ba81d3b75f37ca868aa0ab990bb977fd41519eb
F src/printf.c af0dc65c293427272e1949c7807b1d88f10004fd
@ -33,10 +33,10 @@ F src/random.c b36c3f57dc80c8f354e6bfbf39cf1e1de021d54a
F src/select.c a6bfdaa92d4614e79bf18129283c5163faa291fc
F src/shell.c c1785b4af18192056adbe894f8626a7e7bdf47aa
F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e
F src/sqlite.h.in f13156b85c51a6d7d06678bbe69554c90cde1fe2
F src/sqlite.h.in 182336b2763d15d31ffd9ac1112e6ddd190c02e4
F src/sqliteInt.h 97e2dd488ab433e27eda6e26f4c84a9a2684785c
F src/table.c 5be76051a8ed6f6bfa641f4adc52529efa34fbf9
F src/tclsqlite.c 82eda60c7ae5cd7b71023a55c5710a74713c313b
F src/tclsqlite.c 8b30b01d9fb814a5a358dafd697de16d968cb73e
F src/tokenize.c 8fc3936eefad84f1fff19e0892ed0542eb9ac7b3
F src/update.c 8365b3922ea098330d1e20862d6e64911e4e03d0
F src/util.c aec315b834bad444c9e0e90efd9d2eaeeb37c90c
@ -47,8 +47,8 @@ F test/all.test 15cac2f6b2d4c55bf896212aff3cc9d6597b0490
F test/copy.test b77a1214bd7756f2849d5c4fa6e715c0ff0c34eb
F test/dbbe.test a022fe2d983848f786e17ef1fc6809cfd37fb02c
F test/delete.test 50b9b1f06c843d591741dba7869433a105360dbf
F test/expr.test 1e4822af0213734dd325521a6e25fe38f1fa7f9d
F test/func.test 11c415efe9d435aa0136edd0b3cb11efe5c3ead7
F test/expr.test e55eb507744f771b814fdbea14fddb69caa4538a
F test/func.test ac3def2a673d1042750ae1a4ad1768bb7c7ae90b
F test/in.test ea48016c4fcc479d315932ae2b8568146686ffaf
F test/index.test b189ac11bf8d4fbcf87402f4028c25c8a6d91bb5
F test/insert.test dbd3bd189edb61fddbe66c236694ef23352429f1
@ -65,7 +65,7 @@ F test/sort.test 838cd862642ed9a2c47e1a17b5c33da452b4552e
F test/subselect.test bf8b251a92fb091973c1c469ce499dc9648a41d5
F test/table.test c1704fead1af27d67850a934d531848ce5bee4a7
F test/tclsqlite.test d2aa55926874783b2401f0146e839f773c6796e1
F test/tester.tcl c77fd7a4fb1f3812e469be6229ee330baaffc911
F test/tester.tcl dba25c97cc89f109a9350f12792f17b24202d65f
F test/trans.test 82556605d48f56ad4679e95478d70546a763f26a
F test/update.test 72c0c93310483b86dc904a992220c5b84c7ce100
F test/vacuum.test b95d8119a0a83dc6c4ac63888f8872f06199e065
@ -94,7 +94,7 @@ F www/opcode.tcl cb3a1abf8b7b9be9f3a228d097d6bf8b742c2b6f
F www/sqlite.tcl cb0d23d8f061a80543928755ec7775da6e4f362f
F www/tclsqlite.tcl 06f81c401f79a04f2c5ebfb97e7c176225c0aef2
F www/vdbe.tcl 0c8aaa529dd216ccbf7daaabd80985e413d5f9ad
P b5f994feb44f76782279cdbb1654d340f63e8995
R 49065187ae08404d71560bc6435e0230
P 4b3ffa161a09653919a689336784a85b9548c249
R 712a3306e2a2c79bccc911915e955880
U drh
Z 13983b7b909cd6705720cd336bde6816
Z bfdec300c92af1e06bfec59389035a75

View File

@ -1 +1 @@
4b3ffa161a09653919a689336784a85b9548c249
735d8b5c13b5e2602b37940377fced098be210c1

View File

@ -26,7 +26,7 @@
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
** $Id: main.c,v 1.26 2001/04/05 15:57:13 drh Exp $
** $Id: main.c,v 1.27 2001/04/06 16:13:43 drh Exp $
*/
#include "sqliteInt.h"
#include <unistd.h>
@ -195,9 +195,9 @@ const char sqlite_version[] = SQLITE_VERSION;
** following global constant always lets us know.
*/
#ifdef SQLITE_UTF8
char sqlite_encoding[] = "UTF-8";
const char sqlite_encoding[] = "UTF-8";
#else
char sqlite_encoding[] = "iso8859";
const char sqlite_encoding[] = "iso8859";
#endif
/*

View File

@ -24,7 +24,7 @@
** This header file defines the interface that the sqlite library
** presents to client programs.
**
** @(#) $Id: sqlite.h.in,v 1.11 2001/04/05 15:57:13 drh Exp $
** @(#) $Id: sqlite.h.in,v 1.12 2001/04/06 16:13:43 drh Exp $
*/
#ifndef _SQLITE_H_
#define _SQLITE_H_
@ -55,7 +55,7 @@ extern const char sqlite_version[];
** see. The character encoding makes a difference for the LIKE and GLOB
** operators and for the LENGTH() and SUBSTR() functions.
*/
extern char sqlite_encoding[];
extern const char sqlite_encoding[];
/*
** Each open sqlite database is represented by an instance of the

View File

@ -23,7 +23,7 @@
*************************************************************************
** A TCL Interface to SQLite
**
** $Id: tclsqlite.c,v 1.15 2001/04/05 15:57:13 drh Exp $
** $Id: tclsqlite.c,v 1.16 2001/04/06 16:13:43 drh Exp $
*/
#ifndef NO_TCL /* Omit this whole file if TCL is unavailable */
@ -385,11 +385,38 @@ static int DbObjCmd(void *cd, Tcl_Interp *interp, int objc,Tcl_Obj *const*objv){
**
** The second argument is the name of the directory that contains
** the sqlite database that is to be accessed.
**
** For testing purposes, we also support the following:
**
** sqlite -encoding
**
** Return the encoding used by LIKE and GLOB operators. Choices
** are UTF-8 and iso8859.
**
** sqlite -tcl-uses-utf
**
** Return "1" if compiled with a Tcl uses UTF-8. Return "0" if
** not. Used by tests to make sure the library was compiled
** correctly.
*/
static int DbMain(void *cd, Tcl_Interp *interp, int argc, char **argv){
int mode;
SqliteDb *p;
char *zErrMsg;
if( argc==2 ){
if( strcmp(argv[1],"-encoding")==0 ){
Tcl_AppendResult(interp,sqlite_encoding,0);
return TCL_OK;
}
if( strcmp(argv[1],"-tcl-uses-utf")==0 ){
#ifdef TCL_UTF_MAX
Tcl_AppendResult(interp,"1",0);
#else
Tcl_AppendResult(interp,"0",0);
#endif
return TCL_OK;
}
}
if( argc!=3 && argc!=4 ){
Tcl_AppendResult(interp,"wrong # args: should be \"", argv[0],
" HANDLE FILENAME ?MODE?\"", 0);
@ -429,7 +456,6 @@ static int DbMain(void *cd, Tcl_Interp *interp, int argc, char **argv){
*/
int Sqlite_Init(Tcl_Interp *interp){
Tcl_CreateCommand(interp, "sqlite", DbMain, 0, 0);
Tcl_SetVar(interp,"sqlite_encoding",sqlite_encoding,TCL_GLOBAL_ONLY);
Tcl_PkgProvide(interp, "sqlite", "1.0");
return TCL_OK;
}

View File

@ -23,7 +23,7 @@
# This file implements regression tests for SQLite library. The
# focus of this file is testing expressions.
#
# $Id: expr.test,v 1.12 2001/04/05 15:57:14 drh Exp $
# $Id: expr.test,v 1.13 2001/04/06 16:13:43 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -162,7 +162,7 @@ test_expr expr-5.12 {t1='abc', t2='ABC'} {t1 NOT LIKE t2} 0
# The following tests only work on versions of TCL that support
# Unicode and SQLite configured for UTF-8 support.
#
if {"\u1234"!="u1234" && $::sqlite_encoding=="UTF-8"} {
if {"\u1234"!="u1234" && [sqlite -encoding]=="UTF-8"} {
test_expr expr-5.13 "t1='a\u0080c', t2='A_C'" {t1 LIKE t2} 1
test_expr expr-5.14 "t1='a\u07FFc', t2='A_C'" {t1 LIKE t2} 1
test_expr expr-5.15 "t1='a\u0800c', t2='A_C'" {t1 LIKE t2} 1
@ -179,7 +179,7 @@ if {"\u1234"!="u1234" && $::sqlite_encoding=="UTF-8"} {
# Theses tests are for when SQLite assumes iso8859 characters.
#
if {$::sqlite_encoding=="iso8859"} {
if {[sqlite -encoding]=="iso8859"} {
catch {encoding system iso8859-1}
test_expr expr-5.50 "t1='a\266c', t2='A_C'" {t1 LIKE t2} 1
test_expr expr-5.51 "t1='a\347', t2='A_'" {t1 LIKE t2} 1
@ -215,7 +215,7 @@ test_expr expr-6.25 {t1='ac', t2='a*?c'} {t1 GLOB t2} 0
# These tests only work on versions of TCL that support Unicode
#
if {"\u1234"!="u1234" && $::sqlite_encoding=="UTF-8"} {
if {"\u1234"!="u1234" && [sqlite -encoding]=="UTF-8"} {
test_expr expr-6.26 "t1='a\u0080c', t2='a?c'" {t1 GLOB t2} 1
test_expr expr-6.27 "t1='a\u07ffc', t2='a?c'" {t1 GLOB t2} 1
test_expr expr-6.28 "t1='a\u0800c', t2='a?c'" {t1 GLOB t2} 1
@ -236,7 +236,7 @@ if {"\u1234"!="u1234" && $::sqlite_encoding=="UTF-8"} {
# Theses tests are for when SQLite assumes iso8859 characters.
#
if {$::sqlite_encoding=="iso8859"} {
if {[sqlite -encoding]=="iso8859"} {
catch {encoding system iso8859-1}
test_expr expr-6.50 "t1='a\266c', t2='a?c'" {t1 GLOB t2} 1
test_expr expr-6.51 "t1='a\266', t2='a?'" {t1 GLOB t2} 1

View File

@ -23,7 +23,7 @@
# This file implements regression tests for SQLite library. The
# focus of this file is testing built-in functions.
#
# $Id: func.test,v 1.2 2001/04/05 15:57:14 drh Exp $
# $Id: func.test,v 1.3 2001/04/06 16:13:43 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -89,7 +89,7 @@ do_test func-2.8 {
# Only do the following tests if TCL has UTF-8 capabilities and
# the UTF-8 encoding is turned on in the SQLite library.
#
if {$::sqlite_encoding=="UTF-8" && "\u1234"!="u1234"} {
if {[sqlite -encoding]=="UTF-8" && "\u1234"!="u1234"} {
# Put some UTF-8 characters in the database
#
@ -131,6 +131,6 @@ do_test func-3.10 {
execsql {SELECT substr(t1,-4,3) FROM tbl1 ORDER BY t1}
} "ter ain i\u1234h TF-"
} ;# End sqlite_encoding==UTF-8 and \u1234!=u1234
} ;# End [sqlite -encoding]==UTF-8 and \u1234!=u1234
finish_test

View File

@ -23,7 +23,34 @@
# This file implements some common TCL routines used for regression
# testing the SQLite library
#
# $Id: tester.tcl,v 1.13 2001/04/04 11:48:58 drh Exp $
# $Id: tester.tcl,v 1.14 2001/04/06 16:13:43 drh Exp $
# Make sure tclsqlite was compiled correctly. Abort now with an
# error message if not.
#
if {[sqlite -tcl-uses-utf]} {
if {"\u1234"=="u1234"} {
puts stderr "***** BUILD PROBLEM *****"
puts stderr "$argv0 was linked against an older version"
puts stderr "of TCL that does not support Unicode, but uses a header"
puts stderr "file (\"tcl.h\") from a new TCL version that does support"
puts stderr "Unicode. This combination causes internal errors."
puts stderr "Recompile using a TCL library and header file that match"
puts stderr "and try again.\n**************************"
exit 1
}
} else {
if {"\u1234"!="u1234"} {
puts stderr "***** BUILD PROBLEM *****"
puts stderr "$argv0 was linked against an newer version"
puts stderr "of TCL that supports Unicode, but uses a header file"
puts stderr "(\"tcl.h\") from a old TCL version that does not support"
puts stderr "Unicode. This combination causes internal errors."
puts stderr "Recompile using a TCL library and header file that match"
puts stderr "and try again.\n**************************"
exit 1
}
}
# Create a test database
#