Bug 505880: nss_ZRealloc could use a local NSSArena *arena variable

to make coverity happy
Patch contributed by Timeless <timeless@mozdev.org>, r=nelson


git-svn-id: svn://10.0.0.236/trunk@259984 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
nelson%bolyard.com
2010-03-15 08:29:31 +00:00
parent 220be4d7df
commit 08cc1f4fb1

View File

@@ -35,7 +35,7 @@
* ***** END LICENSE BLOCK ***** */
#ifdef DEBUG
static const char CVS_ID[] = "@(#) $RCSfile: arena.c,v $ $Revision: 1.12 $ $Date: 2008-05-13 01:22:35 $";
static const char CVS_ID[] = "@(#) $RCSfile: arena.c,v $ $Revision: 1.13 $ $Date: 2010-03-15 08:29:31 $";
#endif /* DEBUG */
/*
@@ -1026,6 +1026,7 @@ nss_ZRealloc
PRUint32 newSize
)
{
NSSArena *arena;
struct pointer_header *h, *new_h;
PRUint32 my_newSize = newSize + sizeof(struct pointer_header);
void *rv;
@@ -1051,7 +1052,8 @@ nss_ZRealloc
return pointer;
}
if( (NSSArena *)NULL == h->arena ) {
arena = h->arena;
if (!arena) {
/* Heap */
new_h = (struct pointer_header *)PR_Calloc(1, my_newSize);
if( (struct pointer_header *)NULL == new_h ) {
@@ -1080,22 +1082,22 @@ nss_ZRealloc
void *p;
/* Arena */
#ifdef NSSDEBUG
if( PR_SUCCESS != nssArena_verifyPointer(h->arena) ) {
if (PR_SUCCESS != nssArena_verifyPointer(arena)) {
return (void *)NULL;
}
#endif /* NSSDEBUG */
if( (PRLock *)NULL == h->arena->lock ) {
if (!arena->lock) {
/* Just got destroyed.. so this pointer is invalid */
nss_SetError(NSS_ERROR_INVALID_POINTER);
return (void *)NULL;
}
PR_Lock(h->arena->lock);
PR_Lock(arena->lock);
#ifdef ARENA_THREADMARK
if( (PRThread *)NULL != h->arena->marking_thread ) {
if( PR_GetCurrentThread() != h->arena->marking_thread ) {
PR_Unlock(h->arena->lock);
if (arena->marking_thread) {
if (PR_GetCurrentThread() != arena->marking_thread) {
PR_Unlock(arena->lock);
nss_SetError(NSS_ERROR_ARENA_MARKED_BY_ANOTHER_THREAD);
return (void *)NULL;
}
@@ -1117,19 +1119,19 @@ nss_ZRealloc
*/
char *extra = &((char *)pointer)[ newSize ];
(void)nsslibc_memset(extra, 0, (h->size - newSize));
PR_Unlock(h->arena->lock);
PR_Unlock(arena->lock);
return pointer;
}
PR_ARENA_ALLOCATE(p, &h->arena->pool, my_newSize);
PR_ARENA_ALLOCATE(p, &arena->pool, my_newSize);
if( (void *)NULL == p ) {
PR_Unlock(h->arena->lock);
PR_Unlock(arena->lock);
nss_SetError(NSS_ERROR_NO_MEMORY);
return (void *)NULL;
}
new_h = (struct pointer_header *)p;
new_h->arena = h->arena;
new_h->arena = arena;
new_h->size = newSize;
rv = (void *)((char *)new_h + sizeof(struct pointer_header));
if (rv != pointer) {
@@ -1139,7 +1141,7 @@ nss_ZRealloc
(void)nsslibc_memset(&((char *)rv)[ h->size ], 0, (newSize - h->size));
h->arena = (NSSArena *)NULL;
h->size = 0;
PR_Unlock(new_h->arena->lock);
PR_Unlock(arena->lock);
return rv;
}
/*NOTREACHED*/