# HG changeset patch # User mas01cr # Date 1196954920 0 # Node ID acafe033b9622dc6337140573cba05c0d1ea7f47 # Parent 083956accbceba8ddbf2a24b0c420469f7d0fdbe Port from trunk/ the fix for linux/OS X ABI mismatches (Use natural alignment for all fields in dbH). diff -r 083956accbce -r acafe033b962 audioDB.h --- a/audioDB.h Thu Dec 06 14:41:07 2007 +0000 +++ b/audioDB.h Thu Dec 06 15:28:40 2007 +0000 @@ -49,7 +49,7 @@ #define O2_OLD_MAGIC ('O'|'2'<<8|'D'<<16|'B'<<24) #define O2_MAGIC ('o'|'2'<<8|'d'<<16|'b'<<24) -#define O2_FORMAT_VERSION (3U) +#define O2_FORMAT_VERSION (4U) #define O2_DEFAULT_POINTNN (10U) #define O2_DEFAULT_TRACKNN (10U) @@ -98,12 +98,13 @@ var = (type) tmp; \ } -typedef struct dbTableHeader{ +typedef struct dbTableHeader { uint32_t magic; uint32_t version; uint32_t numFiles; uint32_t dim; uint32_t flags; + uint32_t headerSize; off_t length; off_t fileTableOffset; off_t trackTableOffset; diff -r 083956accbce -r acafe033b962 common.cpp --- a/common.cpp Thu Dec 06 14:41:07 2007 +0000 +++ b/common.cpp Thu Dec 06 15:28:40 2007 +0000 @@ -96,7 +96,11 @@ } if(dbH->version != O2_FORMAT_VERSION) { - error("database file has incorect version", dbName); + error("database file has incorrect version", dbName); + } + + if(dbH->headerSize != O2_HEADERSIZE) { + error("sizeof(dbTableHeader) unexpected: platform ABI mismatch?", dbName); } CHECKED_MMAP(char *, db, 0, getpagesize()); diff -r 083956accbce -r acafe033b962 create.cpp --- a/create.cpp Thu Dec 06 14:41:07 2007 +0000 +++ b/create.cpp Thu Dec 06 15:28:40 2007 +0000 @@ -34,6 +34,7 @@ dbH->numFiles = 0; dbH->dim = 0; dbH->flags = 0; + dbH->headerSize = O2_HEADERSIZE; dbH->length = 0; dbH->fileTableOffset = ALIGN_PAGE_UP(O2_HEADERSIZE); dbH->trackTableOffset = ALIGN_PAGE_UP(dbH->fileTableOffset + O2_FILETABLESIZE*maxfiles);