メインはこのようになっております(関連部分だけの抜粋です)
static struct hashlist message_list;

ハッシュリストの作成部分
 hashlist_create( &message_list, 2048, 682 );

マージしてハッシュへ登録部分
  if( src1id == src2id ) {
   src1ptr += 7 + src1len;
   src2ptr += 7 + src2len;
   hashlist_add( &message_list, src2id, destptr );
  } else
  if( src1id > src2id ) {
   src2ptr += 7 + src2len;
   hashlist_add( &message_list, src2id, destptr );
  } else {
   src1ptr += 7 + src1len;
   hashlist_add( &message_list, src1id, destptr );
  }

ハッシュリストを参照する部分(hashlist_lookup内で無限ループ)
 struct hashnode* node = hashlist_lookup( &message_list, message_id );
 return node ? (char*)node->info : "(null)";