]> git.sur5r.net Git - openldap/commitdiff
Put MDB_node.<mn_lo,mn_hi> in host byte order.
authorHallvard Furuseth <hallvard@openldap.org>
Sat, 10 Sep 2011 08:11:55 +0000 (10:11 +0200)
committerHallvard Furuseth <hallvard@openldap.org>
Sat, 10 Sep 2011 20:49:20 +0000 (22:49 +0200)
libraries/libmdb/mdb.c

index db5a11b2b248c8596c15f57b255ed2e5bc60ec83..fb0df164ff4a4650e49274f88483b324ec54cb7f 100644 (file)
@@ -533,10 +533,13 @@ typedef struct MDB_page {
 typedef struct MDB_node {
        /** lo and hi are used for data size on leaf nodes and for
         * child pgno on branch nodes. On 64 bit platforms, flags
-        * is also used for pgno. (branch nodes ignore flags)
+        * is also used for pgno. (Branch nodes have no flags).
+        * They are in in host byte order in case that lets some
+        * accesses be optimized into a 32-bit word access.
         */
-       unsigned short  mn_lo;
-       unsigned short  mn_hi;                  /**< part of dsize or pgno */
+#define mn_lo mn_offset[__BYTE_ORDER!=__LITTLE_ENDIAN]
+#define mn_hi mn_offset[__BYTE_ORDER==__LITTLE_ENDIAN] /**< part of dsize or pgno */
+       unsigned short  mn_offset[2];
        unsigned short  mn_flags;               /**< flags for special node types */
 #define F_BIGDATA       0x01                   /**< data put on overflow page */
 #define F_SUBDATA       0x02                   /**< data is a sub-database */