new_bytes = (new_size * sizeof(PRInt32)) + sizeof(struct stack_header_str);
new_bytes = (new_size * sizeof(PRInt32)) + sizeof(error_stack);
error_get_my_stack(  void){  PRStatus st;  error_stack *rv;  PRUintn new_size;  PRUint32 new_bytes;  error_stack *new_stack;  if( 0 == error_stack_index ) {    st = PR_CallOnce(&error_call_once, error_once_function);    if( PR_SUCCESS != st ) {      return (error_stack *)NULL;    }  }  rv = (error_stack *)nss_GetThreadPrivate(error_stack_index);  if( (error_stack *)NULL == rv ) {    /* Doesn't exist; create one */    new_size = 16;  } else {    if( rv->header.count == rv->header.space ) {      /* Too small, expand it */      new_size = rv->header.space + 16;    } else {      /* Okay, return it */      return rv;    }  }  new_bytes = (new_size * sizeof(PRInt32)) +     sizeof(struct stack_header_str);  /* Use NSPR's calloc/realloc, not NSS's, to avoid loops! */  new_stack = PR_Calloc(1, new_bytes);    if( (error_stack *)NULL != new_stack ) {    if( (error_stack *)NULL != rv ) {	(void)nsslibc_memcpy(new_stack,rv,rv->header.space);    }    new_stack->header.space = new_size;  }  /* Set the value, whether or not the allocation worked */  nss_SetThreadPrivate(error_stack_index, new_stack);  return new_stack;}