Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Updated uthash.h and utlist.h to 1.9.8
Alexandre Perrin committed 13 years ago
commit 639f6d63b2d652ee9ee7bc65521f7f631a8e4fcd
parent 8a354dd
2 files changed +31 -20
modified external/uthash/uthash.h
@@ -64,7 +64,7 @@ typedef unsigned char uint8_t;
#include <inttypes.h>   /* uint32_t */
#endif

-
#define UTHASH_VERSION 1.9.7
+
#define UTHASH_VERSION 1.9.8

#ifndef uthash_fatal
#define uthash_fatal(msg) exit(-1)        /* fatal error (out of memory,etc) */
@@ -158,6 +158,16 @@ do {

#define HASH_ADD(hh,head,fieldname,keylen_in,add)                                \
        HASH_ADD_KEYPTR(hh,head,&((add)->fieldname),keylen_in,add)
+

+
#define HASH_REPLACE(hh,head,fieldname,keylen_in,add,replaced)                   \
+
do {                                                                             \
+
  replaced=NULL;                                                                 \
+
  HASH_FIND(hh,head,&((add)->fieldname),keylen_in,replaced);                     \
+
  if (replaced!=NULL) {                                                          \
+
     HASH_DELETE(hh,head,replaced);                                              \
+
  };                                                                             \
+
  HASH_ADD(hh,head,fieldname,keylen_in,add);                                     \
+
} while(0)
 
#define HASH_ADD_KEYPTR(hh,head,keyptr,keylen_in,add)                            \
do {                                                                             \
@@ -242,14 +252,20 @@ do {
    HASH_FIND(hh,head,findstr,strlen(findstr),out)
#define HASH_ADD_STR(head,strfield,add)                                          \
    HASH_ADD(hh,head,strfield,strlen(add->strfield),add)
+
#define HASH_REPLACE_STR(head,strfield,add,replaced)                             \
+
  HASH_REPLACE(hh,head,strfield,strlen(add->strfield),add,replaced)
#define HASH_FIND_INT(head,findint,out)                                          \
    HASH_FIND(hh,head,findint,sizeof(int),out)
#define HASH_ADD_INT(head,intfield,add)                                          \
    HASH_ADD(hh,head,intfield,sizeof(int),add)
+
#define HASH_REPLACE_INT(head,intfield,add,replaced)                             \
+
    HASH_REPLACE(hh,head,intfield,sizeof(int),add,replaced)
#define HASH_FIND_PTR(head,findptr,out)                                          \
    HASH_FIND(hh,head,findptr,sizeof(void *),out)
#define HASH_ADD_PTR(head,ptrfield,add)                                          \
    HASH_ADD(hh,head,ptrfield,sizeof(void *),add)
+
#define HASH_REPLACE_PTR(head,ptrfield,add)                                      \
+
    HASH_REPLACE(hh,head,ptrfield,sizeof(void *),add,replaced)
#define HASH_DEL(head,delptr)                                                    \
    HASH_DELETE(hh,head,delptr)

@@ -399,10 +415,10 @@ do {
#define HASH_JEN(key,keylen,num_bkts,hashv,bkt)                                  \
do {                                                                             \
  unsigned _hj_i,_hj_j,_hj_k;                                                    \
-
  char *_hj_key=(char*)(key);                                                    \
+
  unsigned char *_hj_key=(unsigned char*)(key);                                  \
  hashv = 0xfeedbeef;                                                            \
  _hj_i = _hj_j = 0x9e3779b9;                                                    \
-
  _hj_k = (unsigned)keylen;                                                                \
+
  _hj_k = (unsigned)keylen;                                                      \
  while (_hj_k >= 12) {                                                          \
    _hj_i +=    (_hj_key[0] + ( (unsigned)_hj_key[1] << 8 )                      \
        + ( (unsigned)_hj_key[2] << 16 )                                         \
@@ -450,7 +466,7 @@ do {
#endif
#define HASH_SFH(key,keylen,num_bkts,hashv,bkt)                                  \
do {                                                                             \
-
  char *_sfh_key=(char*)(key);                                                   \
+
  unsigned char *_sfh_key=(unsigned char*)(key);                                 \
  uint32_t _sfh_tmp, _sfh_len = keylen;                                          \
                                                                                 \
  int _sfh_rem = _sfh_len & 3;                                                   \
@@ -460,7 +476,7 @@ do {
  /* Main loop */                                                                \
  for (;_sfh_len > 0; _sfh_len--) {                                              \
    hashv    += get16bits (_sfh_key);                                            \
-
    _sfh_tmp       = (get16bits (_sfh_key+2) << 11) ^ hashv;                     \
+
    _sfh_tmp       = (uint32_t)(get16bits (_sfh_key+2)) << 11  ^ hashv;          \
    hashv     = (hashv << 16) ^ _sfh_tmp;                                        \
    _sfh_key += 2*sizeof (uint16_t);                                             \
    hashv    += hashv >> 11;                                                     \
@@ -470,7 +486,7 @@ do {
  switch (_sfh_rem) {                                                            \
    case 3: hashv += get16bits (_sfh_key);                                       \
            hashv ^= hashv << 16;                                                \
-
            hashv ^= _sfh_key[sizeof (uint16_t)] << 18;                          \
+
            hashv ^= (uint32_t)(_sfh_key[sizeof (uint16_t)] << 18);              \
            hashv += hashv >> 11;                                                \
            break;                                                               \
    case 2: hashv += get16bits (_sfh_key);                                       \
modified external/uthash/utlist.h
@@ -24,7 +24,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef UTLIST_H
#define UTLIST_H

-
#define UTLIST_VERSION 1.9.7
+
#define UTLIST_VERSION 1.9.8

#include <assert.h>

@@ -108,15 +108,12 @@ do {
  LDECLTYPE(list) _ls_q;                                                                       \
  LDECLTYPE(list) _ls_e;                                                                       \
  LDECLTYPE(list) _ls_tail;                                                                    \
-
  LDECLTYPE(list) _ls_oldhead;                                                                 \
-
  LDECLTYPE(list) _tmp;                                                                        \
  int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping;                       \
  if (list) {                                                                                  \
    _ls_insize = 1;                                                                            \
    _ls_looping = 1;                                                                           \
    while (_ls_looping) {                                                                      \
      _CASTASGN(_ls_p,list);                                                                   \
-
      _CASTASGN(_ls_oldhead,list);                                                             \
      list = NULL;                                                                             \
      _ls_tail = NULL;                                                                         \
      _ls_nmerges = 0;                                                                         \
@@ -153,13 +150,15 @@ do {
        }                                                                                      \
        _ls_p = _ls_q;                                                                         \
      }                                                                                        \
-
      _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list);                       \
+
      if (_ls_tail) {                                                                          \
+
        _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,NULL,next); _RS(list);                     \
+
      }                                                                                        \
      if (_ls_nmerges <= 1) {                                                                  \
        _ls_looping=0;                                                                         \
      }                                                                                        \
      _ls_insize *= 2;                                                                         \
    }                                                                                          \
-
  } else _tmp=NULL; /* quiet gcc unused variable warning */                                    \
+
  }                                                                                            \
} while (0)


@@ -172,15 +171,12 @@ do {
  LDECLTYPE(list) _ls_q;                                                                       \
  LDECLTYPE(list) _ls_e;                                                                       \
  LDECLTYPE(list) _ls_tail;                                                                    \
-
  LDECLTYPE(list) _ls_oldhead;                                                                 \
-
  LDECLTYPE(list) _tmp;                                                                        \
  int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping;                       \
  if (list) {                                                                                  \
    _ls_insize = 1;                                                                            \
    _ls_looping = 1;                                                                           \
    while (_ls_looping) {                                                                      \
      _CASTASGN(_ls_p,list);                                                                   \
-
      _CASTASGN(_ls_oldhead,list);                                                             \
      list = NULL;                                                                             \
      _ls_tail = NULL;                                                                         \
      _ls_nmerges = 0;                                                                         \
@@ -225,7 +221,7 @@ do {
      }                                                                                        \
      _ls_insize *= 2;                                                                         \
    }                                                                                          \
-
  } else _tmp=NULL; /* quiet gcc unused variable warning */                                    \
+
  }                                                                                            \
} while (0)

#define CDL_SORT(list, cmp)                                                                    \
@@ -239,7 +235,6 @@ do {
  LDECLTYPE(list) _ls_tail;                                                                    \
  LDECLTYPE(list) _ls_oldhead;                                                                 \
  LDECLTYPE(list) _tmp;                                                                        \
-
  LDECLTYPE(list) _tmp2;                                                                       \
  int _ls_insize, _ls_nmerges, _ls_psize, _ls_qsize, _ls_i, _ls_looping;                       \
  if (list) {                                                                                  \
    _ls_insize = 1;                                                                            \
@@ -295,14 +290,14 @@ do {
        _ls_p = _ls_q;                                                                         \
      }                                                                                        \
      _CASTASGN(list->prev,_ls_tail);                                                          \
-
      _CASTASGN(_tmp2,list);                                                                   \
-
      _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_tmp2,next); _RS(list);                      \
+
      _CASTASGN(_tmp,list);                                                                    \
+
      _SV(_ls_tail,list); _NEXTASGN(_ls_tail,list,_tmp,next); _RS(list);                       \
      if (_ls_nmerges <= 1) {                                                                  \
        _ls_looping=0;                                                                         \
      }                                                                                        \
      _ls_insize *= 2;                                                                         \
    }                                                                                          \
-
  } else _tmp=NULL; /* quiet gcc unused variable warning */                                    \
+
  }                                                                                            \
} while (0)

/******************************************************************************