The 2.01 release has a few problems:
- The configure script only works if Tcl is present Fixed versions are available at: https://www.equi4.com/previews/configure https://www.equi4.com/previews/configure.in - The Mk4tcl builds fails with Tcl 8.0.x, because the mutex defines are missing. Add to mk4tcl.cpp: #ifndef TCL_DECLARE_MUTEX #define TCL_DECLARE_MUTEX(v) #define Tcl_MutexLock(v) #define Tcl_MutexUnlock(v) #endif
July 22, 2000 - found a problem with restructuring doubles. To fix it, apply the following patch:
--- format.cpp.orig Fri Mar 17 16:57:30 2000 +++ format.cpp Sun Jul 23 00:21:31 2000 @@ -1022,10 +1022,12 @@ c4_FormatD (const c4_Property& prop_, c4_HandlerSeq& seq_); virtual ~c4_FormatD (); virtual void Initialize(int); + virtual void Defined(); + static int DoCompare(const c4_Bytes& b1_, const c4_Bytes& b2_); virtual int Compare(int index_, const c4_Bytes& buf_); }; ///////////////////////////////////////////////////////////////////////////// @@ -1045,10 +1047,23 @@ c4_FormatX::Initialize(colNum_); // force maximum size, autosizing more than 32 bits won't work SetAccessWidth(8 * sizeof (double)); +} + +void c4_FormatD::Defined() +{ + d4_assertThis; + + int numRows = RowCount(); + t4_u32 sz = ColSize(); + + if (numRows > 0 && sz == 0) + InsertData(0, numRows * sizeof (double), true); + + c4_FormatX::Defined(); } int c4_FormatD::DoCompare(const c4_Bytes& b1_, const c4_Bytes& b2_) { d4_assert(b1_.Size() == sizeof (double));