@@ -800,17 +800,16 @@ struct blh
800800 ULONG blh_max_sequence; // Number of data pages
801801 USHORT blh_max_segment; // Longest segment
802802 USHORT blh_flags; // flags, etc
803- UCHAR blh_level; // Number of address levels, see blb_level in blb.h
804803 ULONG blh_count; // Total number of segments
805- ULONG blh_length; // Total length of data
804+ FB_UINT64 blh_length; // Total length of data
806805 USHORT blh_sub_type; // Blob sub-type
807- UCHAR blh_charset; // Blob charset (since ODS 11.1)
806+ UCHAR blh_charset; // Blob charset
807+ UCHAR blh_level; // Number of address levels, see blb_level in blb.h
808808// Macro CHECK_BLOB_FIELD_ACCESS_FOR_SELECT is never defined, code under it was left for a case
809809// we would like to have that check in a future.
810810#ifdef CHECK_BLOB_FIELD_ACCESS_FOR_SELECT
811811 USHORT blh_fld_id; // Field ID
812812#endif
813- UCHAR blh_unused;
814813 ULONG blh_page[1 ]; // Page vector for blob pages
815814};
816815
@@ -819,16 +818,15 @@ static_assert(offsetof(struct blh, blh_lead_page) == 0, "blh_lead_page offset mi
819818static_assert (offsetof(struct blh , blh_max_sequence) == 4 , " blh_max_sequence offset mismatch" );
820819static_assert (offsetof(struct blh , blh_max_segment) == 8 , " blh_max_segment offset mismatch" );
821820static_assert (offsetof(struct blh , blh_flags) == 10 , " blh_flags offset mismatch" );
822- static_assert (offsetof(struct blh , blh_level) == 12 , " blh_level offset mismatch" );
823- static_assert (offsetof(struct blh , blh_count) == 16 , " blh_count offset mismatch" );
824- static_assert (offsetof(struct blh , blh_length) == 20 , " blh_length offset mismatch" );
821+ static_assert (offsetof(struct blh , blh_count) == 12 , " blh_count offset mismatch" );
822+ static_assert (offsetof(struct blh , blh_length) == 16 , " blh_length offset mismatch" );
825823static_assert (offsetof(struct blh , blh_sub_type) == 24 , " blh_sub_type offset mismatch" );
826824static_assert (offsetof(struct blh , blh_charset) == 26 , " blh_charset offset mismatch" );
827- static_assert (offsetof(struct blh , blh_unused ) == 27 , " blh_unused offset mismatch" );
825+ static_assert (offsetof(struct blh , blh_level ) == 27 , " blh_level offset mismatch" );
828826static_assert (offsetof(struct blh , blh_page) == 28 , " blh_page offset mismatch" );
829827
830-
831828#define BLH_SIZE static_cast <FB_SIZE_T>(offsetof(Ods::blh, blh_page[0 ]))
829+
832830// rhd_flags, rhdf_flags and blh_flags
833831
834832// record_param flags in req.h must be an exact replica of ODS record header flags
0 commit comments