From: drh Date: Tue, 3 Nov 2009 13:08:16 +0000 (+0000) Subject: Force all qsort() calls in mkkeywordhash.c to be stable so that we get X-Git-Tag: fts3-refactor~41 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9a5f4d64f3d11f01064f8a038ba3939905058fda;p=thirdparty%2Fsqlite.git Force all qsort() calls in mkkeywordhash.c to be stable so that we get predictable results on different platforms. FossilOrigin-Name: 3b02df27ab63936226a90098d88535ed19c2b782 --- diff --git a/manifest b/manifest index 908bd94438..47cd8d0ac1 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -C Adjust\sthe\slemon\simplementation\sso\sthat\sit\salways\scomputes\sthe\ssame\sPDA\nregardless\sof\sqsort()\simplementation\son\sthe\shost\splatform.\s\sIn\sother\swords,\nmake\sall\ssorts\sin\slemon\sstable. -D 2009-11-03T13:02:26 +C Force\sall\sqsort()\scalls\sin\smkkeywordhash.c\sto\sbe\sstable\sso\sthat\swe\sget\npredictable\sresults\son\sdifferent\splatforms. +D 2009-11-03T13:08:17 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in a77dfde96ad86aafd3f71651a4333a104debe86a F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -745,7 +745,7 @@ F tool/genfkey.README cf68fddd4643bbe3ff8e31b8b6d8b0a1b85e20f4 F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5 F tool/lemon.c ee5e39ce2b344ce7c81306b27a59da7698114a2d F tool/lempar.c 2ed70b3fc896a47e07fedfe543324f008f53d223 -F tool/mkkeywordhash.c 8c9f8e3253555101aaa4bf7a0459cbfc8ddc41cc +F tool/mkkeywordhash.c 9216336085e7a7c226a35c0bd780239968f8304f F tool/mkopts.tcl 66ac10d240cc6e86abd37dc908d50382f84ff46e F tool/mkspeedsql.tcl a1a334d288f7adfe6e996f2e712becf076745c97 F tool/mksqlite3c.tcl a7e87ce780cbf30782bca3fd1197e86f92ae6f24 @@ -764,14 +764,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f -P 16a24b4485420bdf30d3c8e22cfbaf008e07df02 -R e72225eb55d8736569f8031586282767 +P d66a0f31ebcc56e6f0f462b3db6aab54f7fab816 +R 91e31635600cb3800baa14d4687e1d08 U drh -Z 9ed57d7b7fd138a4562a0f8b4ab054bf +Z 0bb2002d9c9d8d6a6987522657519773 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD8DBQFK8CnloxKgR168RlERAvvEAJ4zARLPnrRgcFCLL+urqSma1EJWFACghoK5 -rpncZKK3rz8eBtrxBY7ZVmw= -=tZsO +iD8DBQFK8CtFoxKgR168RlERAvt+AJkBQI2LJH6CUrPXrZkZDQd5FHmWKwCeNWmo +X0wFI2+tf0Wum9Vwm5FmTGU= +=YTMU -----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index 4a7aa0d1bf..e261fd0d44 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d66a0f31ebcc56e6f0f462b3db6aab54f7fab816 \ No newline at end of file +3b02df27ab63936226a90098d88535ed19c2b782 \ No newline at end of file diff --git a/tool/mkkeywordhash.c b/tool/mkkeywordhash.c index a6b4a58ac3..872961a532 100644 --- a/tool/mkkeywordhash.c +++ b/tool/mkkeywordhash.c @@ -16,7 +16,7 @@ static const char zHdr[] = "**\n" "** The code in this file has been automatically generated by\n" "**\n" - "** $Header: /home/drh/sqlite/trans/cvs/sqlite/sqlite/tool/mkkeywordhash.c,v 1.38 2009/06/09 14:27:41 drh Exp $\n" + "** sqlite/tool/mkkeywordhash.c\n" "**\n" "** The code in this file implements a function that determines whether\n" "** or not a given identifier is really an SQL keyword. The same thing\n" @@ -301,6 +301,7 @@ static int keywordCompare1(const void *a, const void *b){ if( n==0 ){ n = strcmp(pA->zName, pB->zName); } + assert( n!=0 ); return n; } static int keywordCompare2(const void *a, const void *b){ @@ -310,12 +311,15 @@ static int keywordCompare2(const void *a, const void *b){ if( n==0 ){ n = strcmp(pA->zName, pB->zName); } + assert( n!=0 ); return n; } static int keywordCompare3(const void *a, const void *b){ const Keyword *pA = (Keyword*)a; const Keyword *pB = (Keyword*)b; int n = pA->offset - pB->offset; + if( n==0 ) n = pB->id - pA->id; + assert( n!=0 ); return n; }