diff --git a/ChangeLog b/ChangeLog index fceeefd..ba478db 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-03-15 Brian Bruns + + * src/libmdb/money.c: Two's complement fix from + * src/libmdb/data.c: BOOL fixes from Mike Finger and Ben McKeegan + * src/libmdb/table.c: BOOL fixes from Mike Finger + 2001-09-29 Brian Bruns * src/odbc/odbc.c: diff --git a/src/libmdb/data.c b/src/libmdb/data.c index b6b1367..f1f591f 100644 --- a/src/libmdb/data.c +++ b/src/libmdb/data.c @@ -193,7 +193,8 @@ unsigned char isnull; rc = _mdb_attempt_bind(mdb, col, isnull, row_start + col_start, col->col_size); if (!rc) return 0; - col_start += col->col_size; + if (col->col_type != MDB_BOOL) + col_start += col->col_size; } } @@ -245,6 +246,8 @@ unsigned char isnull; len=mdb->pg_buf[row_end - bitmask_sz - var_cols_found - 1 - num_of_jumps ] - col_start; } + if (len<0) + len+=256; } isnull = mdb_is_null(null_mask, j+1); diff --git a/src/libmdb/money.c b/src/libmdb/money.c index 67dd623..682e1ba 100644 --- a/src/libmdb/money.c +++ b/src/libmdb/money.c @@ -45,17 +45,20 @@ int neg=0; multiplier[0]=1; money = &mdb->pg_buf[start]; + if (money[7] && 0x01) { /* negative number -- preform two's complement */ neg = 1; - for (i=0;i<8;i++) { + for (i=0;i=0; i--) { - money[7] += 1; + for (i=0; ipg_buf[cur_col + mdb->col_fixed_offset] & 0x01 ? 1 : 0; - read_pg_if(mdb, &cur_col, 17); - low_byte = mdb->pg_buf[cur_col + mdb->col_size_offset]; - read_pg_if(mdb, &cur_col, 18); - high_byte = mdb->pg_buf[cur_col + mdb->col_size_offset + 1]; - col.col_size += high_byte * 256 + low_byte; + if (col.col_type != MDB_BOOL) { + read_pg_if(mdb, &cur_col, 17); + low_byte = mdb->pg_buf[cur_col + mdb->col_size_offset]; + read_pg_if(mdb, &cur_col, 18); + high_byte = mdb->pg_buf[cur_col + mdb->col_size_offset + 1]; + col.col_size += high_byte * 256 + low_byte; + } else + col.col_size=0; pcol = g_memdup(&col, sizeof(MdbColumn)); slist = g_slist_insert_sorted(slist,pcol,(GCompareFunc)mdb_col_comparer);