The macro definitions of m_KEY_CMP and m_GET_BIT are wrong: macro parameters must always be surrounded with parentheses in the macro expression:
#define m_KEY_CMP(t, k1, k2) memcmp(k1, k2, (size_t)(t)->params.key_size) #define m_GET_BIT(key, bit) ((bit < 0) ? 0 : ((int)((*((key) + (bit >> 3))) >> (7 - (bit & 0x07))) & 0x01)) should be: #define m_KEY_CMP(t, k1, k2) memcmp((k1), (k2), (size_t)(t)->params.key_size) #define m_GET_BIT(key, bit) (((bit) < 0) ? 0 : ((int)((*((key) + ((bit) >> 3))) >> (7 - ((bit) & 0x07))) & 0x01)) On the other hand, why not convert them to inline functions instead? Also, they are only used in patricia.c, so I suggest removing m_KEY_CMP and m_GET_BIT from ncspatricia.h and instead adding the following inline functions in patricia.c (they should also be given better names, but I haven't done that here): #include <stdint.h> #include <string.h> static inline int m_KEY_CMP(const NCS_PATRICIA_TREE* t, const uint8_t* k1, const uint8_t* k2) { return memcmp(k1, k2, t->params.key_size); } static inline int m_GET_BIT(const uint8_t* key, int bit) { return (bit < 0) ? 0 : ((int) ((*(key + (bit >> 3))) >> (7 - (bit & 0x07))) & 0x01); } regards, Anders Widell 2013-12-05 13:51, ramesh.bet...@oracle.com skrev: > osaf/libs/core/common/saf_edu.c | 2 +- > osaf/libs/core/include/ncspatricia.h | 3 +++ > osaf/libs/core/leap/hj_edp.c | 2 +- > osaf/libs/core/leap/hj_edu.c | 2 +- > osaf/libs/core/leap/include/Makefile.am | 1 - > osaf/libs/core/leap/include/patricia.h | 39 > --------------------------------------- > osaf/libs/core/leap/patricia.c | 2 +- > osaf/libs/core/mds/mds_main.c | 2 +- > 8 files changed, 8 insertions(+), 45 deletions(-) > > > diff --git a/osaf/libs/core/common/saf_edu.c b/osaf/libs/core/common/saf_edu.c > --- a/osaf/libs/core/common/saf_edu.c > +++ b/osaf/libs/core/common/saf_edu.c > @@ -30,7 +30,7 @@ > > #include <ncsgl_defs.h> > > -#include "patricia.h" > +#include "ncspatricia.h" > #include "ncsencdec_pub.h" > > #include "saAis.h" > diff --git a/osaf/libs/core/include/ncspatricia.h > b/osaf/libs/core/include/ncspatricia.h > --- a/osaf/libs/core/include/ncspatricia.h > +++ b/osaf/libs/core/include/ncspatricia.h > @@ -47,6 +47,9 @@ extern "C" { > > #include "ncsgl_defs.h" > > +#define m_KEY_CMP(t, k1, k2) memcmp(k1, k2, (size_t)(t)->params.key_size) > +#define m_GET_BIT(key, bit) ((bit < 0) ? 0 : ((int)((*((key) + (bit >> 3))) > >> (7 - (bit & 0x07))) & 0x01)) > + > typedef struct ncs_patricia_params { > int key_size; /* 1..NCS_PATRICIA_MAX_KEY_SIZE - in OCTETS */ > int info_size; /* NOT USED! Present for > backward-compatibility only! */ > diff --git a/osaf/libs/core/leap/hj_edp.c b/osaf/libs/core/leap/hj_edp.c > --- a/osaf/libs/core/leap/hj_edp.c > +++ b/osaf/libs/core/leap/hj_edp.c > @@ -28,7 +28,7 @@ > > #include <ncsgl_defs.h> > #include "ncs_osprm.h" > -#include "patricia.h" > +#include "ncspatricia.h" > #include "ncssysf_mem.h" > #include "ncsencdec_pub.h" > #include "ncs_edu.h" > diff --git a/osaf/libs/core/leap/hj_edu.c b/osaf/libs/core/leap/hj_edu.c > --- a/osaf/libs/core/leap/hj_edu.c > +++ b/osaf/libs/core/leap/hj_edu.c > @@ -31,7 +31,7 @@ > #include "ncssysf_def.h" > #include "ncssysf_mem.h" > #include "sysf_def.h" > -#include "patricia.h" > +#include "ncspatricia.h" > #include "ncssysfpool.h" > #include "ncsencdec_pub.h" > #include "ncs_edu.h" > diff --git a/osaf/libs/core/leap/include/Makefile.am > b/osaf/libs/core/leap/include/Makefile.am > --- a/osaf/libs/core/leap/include/Makefile.am > +++ b/osaf/libs/core/leap/include/Makefile.am > @@ -22,7 +22,6 @@ noinst_HEADERS = \ > ncsdlib.h \ > ncs_edu.h \ > ncs_hdl.h \ > - patricia.h \ > sysf_def.h \ > sysf_exc_scr.h \ > sysf_ipc.h \ > diff --git a/osaf/libs/core/leap/include/patricia.h > b/osaf/libs/core/leap/include/patricia.h > deleted file mode 100644 > --- a/osaf/libs/core/leap/include/patricia.h > +++ /dev/null > @@ -1,39 +0,0 @@ > -/* -*- OpenSAF -*- > - * > - * (C) Copyright 2008 The OpenSAF Foundation > - * > - * This program is distributed in the hope that it will be useful, but > - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY > - * or FITNESS FOR A PARTICULAR PURPOSE. This file and program are licensed > - * under the GNU Lesser General Public License Version 2.1, February 1999. > - * The complete license can be accessed from the following location: > - * http://opensource.org/licenses/lgpl-license.php > - * See the Copying file included with the OpenSAF distribution for full > - * licensing terms. > - * > - * Author(s): Emerson Network Power > - * > - */ > - > -/***************************************************************************** > - > - DESCRIPTION: > - > - This module contains declarations pertaining to implementation of > - patricia tree search/add/delete functions. > - > -****************************************************************************** > -*/ > - > -/* > - * Module Inclusion Control... > - */ > -#ifndef _PATRICIA_H_ > -#define _PATRICIA_H_ > - > -#include "ncspatricia.h" > - > -#define m_KEY_CMP(t, k1, k2) memcmp(k1, k2, (size_t)(t)->params.key_size) > -#define m_GET_BIT(key, bit) ((bit < 0) ? 0 : ((int)((*((key) + (bit >> 3))) > >> (7 - (bit & 0x07))) & 0x01)) > - > -#endif > diff --git a/osaf/libs/core/leap/patricia.c b/osaf/libs/core/leap/patricia.c > --- a/osaf/libs/core/leap/patricia.c > +++ b/osaf/libs/core/leap/patricia.c > @@ -43,7 +43,7 @@ > #include "ncs_osprm.h" > #include "ncssysfpool.h" > #include "ncssysf_def.h" > -#include "patricia.h" > +#include "ncspatricia.h" > > const static uint8_t BitMasks[9] = { > 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff > diff --git a/osaf/libs/core/mds/mds_main.c b/osaf/libs/core/mds/mds_main.c > --- a/osaf/libs/core/mds/mds_main.c > +++ b/osaf/libs/core/mds/mds_main.c > @@ -35,7 +35,7 @@ > #include "ncssysf_tmr.h" > #include "mds_dl_api.h" > #include "mds_core.h" > -#include "patricia.h" > +#include "ncspatricia.h" > #include "mds_log.h" > #include "ncs_main_pub.h" > #include "mds_dt_tcp.h" > > ------------------------------------------------------------------------------ > Sponsored by Intel(R) XDK > Develop, test and display web and hybrid apps with a single code base. > Download it for free now! > http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > > ------------------------------------------------------------------------------ Sponsored by Intel(R) XDK Develop, test and display web and hybrid apps with a single code base. Download it for free now! http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel