Re: tds_get_size_by_type for SYBMSDATE

LacaK <[email protected]>
Newsgroups gmane.comp.db.tds.freetds
Message-ID <[email protected]>
>
> 24 ?? On my 64 bit machine is 16 and should be 16.
I did some testing and googling and it seems, that inter - padding in 
structures can vary compiler to compiler.
(as C++ standard does not strictly defines binary layout)
It seems, that Microsoft uses his "own padding and sizing" with bit-fields.

I did small change in TDS_DATETIMEALL, which gives me now 16 bytes size 
(as in your case):
typedef struct
{
    TDS_UINT8    time;    /* time, 7 digit precision */
    TDS_INT      date;    /* date, 0 = 1900-01-01 */
    TDS_SMALLINT offset;    /* time offset */
// HERE "unsigned short" instead of "unsigned":
    unsigned short time_prec:4;
    unsigned short has_time:1;
    unsigned short has_date:1;
    unsigned short has_offset:1;
} TDS_DATETIMEALL;

So now we have: 8 bytes + 4 bytes + 2 bytes + 2 bytes = 16 bytes (seems, 
that no padding occurs at end because 16 mod 8 = 0)
Can you change please "unsigned" to "unsigned short" in definition of 
TDS_DATETIMEALL ?
-Laco.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.