Mercurial > trustbridge > nss-cmake-static
diff nss/lib/base/hashops.c @ 0:1e5118fa0cb1
This is NSS with a Cmake Buildsyste
To compile a static NSS library for Windows we've used the
Chromium-NSS fork and added a Cmake buildsystem to compile
it statically for Windows. See README.chromium for chromium
changes and README.trustbridge for our modifications.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Mon, 28 Jul 2014 10:47:06 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nss/lib/base/hashops.c Mon Jul 28 10:47:06 2014 +0200 @@ -0,0 +1,84 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* + * hashops.c + * + * This file includes a set of PLHashAllocOps that use NSSArenas. + */ + +#ifndef BASE_H +#include "base.h" +#endif /* BASE_H */ + +static void * PR_CALLBACK +nss_arena_hash_alloc_table +( + void *pool, + PRSize size +) +{ + NSSArena *arena = (NSSArena *)NULL; + +#ifdef NSSDEBUG + if( (void *)NULL != arena ) { + if( PR_SUCCESS != nssArena_verifyPointer(arena) ) { + return (void *)NULL; + } + } +#endif /* NSSDEBUG */ + + return nss_ZAlloc(arena, size); +} + +static void PR_CALLBACK +nss_arena_hash_free_table +( + void *pool, + void *item +) +{ + (void)nss_ZFreeIf(item); +} + +static PLHashEntry * PR_CALLBACK +nss_arena_hash_alloc_entry +( + void *pool, + const void *key +) +{ + NSSArena *arena = NULL; + +#ifdef NSSDEBUG + if( (void *)NULL != arena ) { + if( PR_SUCCESS != nssArena_verifyPointer(arena) ) { + return (void *)NULL; + } + } +#endif /* NSSDEBUG */ + + return nss_ZNEW(arena, PLHashEntry); +} + +static void PR_CALLBACK +nss_arena_hash_free_entry +( + void *pool, + PLHashEntry *he, + PRUintn flag +) +{ + if( HT_FREE_ENTRY == flag ) { + (void)nss_ZFreeIf(he); + } +} + +NSS_IMPLEMENT_DATA PLHashAllocOps +nssArenaHashAllocOps = { + nss_arena_hash_alloc_table, + nss_arena_hash_free_table, + nss_arena_hash_alloc_entry, + nss_arena_hash_free_entry +};