qsort((void*)mVectorInfoArray,(size_t)mVectorCount,sizeof(VectorInfo*),compare);
NS_QuickSort((void*)mVectorInfoArray,(size_t)mVectorCount,sizeof(VectorInfo*),compare, NULL);
void CDTDDebug::NoteVector(eHTMLTags aTags[],PRInt32 count, PRBool good_vector){    // if the table doesn't exist, create it	if (!mVectorInfoArray) {		mVectorInfoArray = (VectorInfo**)PR_Calloc(TABLE_SIZE,sizeof(VectorInfo*));	} 	else {        // attempt to look up the vector		for (PRInt32 i = 0; i < mVectorCount; i++)             // check the vector only if they are the same size, if they            // match then just return without doing further work			if (mVectorInfoArray[i]->count == count) {            PRBool match = PR_TRUE;            for (PRInt32 j = 0; j < count; j++)               if (mVectorInfoArray[i]->vector[j] != aTags[j]) {                  match = PR_FALSE;                  break;               }            if (match) {                    // bzzzt. and we have a winner.. bump the ref count					mVectorInfoArray[i]->references++;					return;            }			}	}    // the context vector hasn't been noted, so allocate it and    // initialize it one.. add it to the table	VectorInfo * pVectorInfo = (VectorInfo*)PR_Malloc(sizeof(VectorInfo));	pVectorInfo->references = 1;	pVectorInfo->count = count;	pVectorInfo->good_vector = good_vector;	pVectorInfo->vector = (eHTMLTags*)PR_Malloc(count*sizeof(eHTMLTags));   for (PRInt32 i = 0; i < count; i++)      pVectorInfo->vector[i] = aTags[i];	mVectorInfoArray[mVectorCount++] = pVectorInfo;    // have we maxed out the table?  grow it.. sort it.. love it. 	if ((mVectorCount % TABLE_SIZE) == 0) {		mVectorInfoArray = (VectorInfo**)realloc(			mVectorInfoArray,			(sizeof(VectorInfo*)*((mVectorCount/TABLE_SIZE)+1)*TABLE_SIZE));	  if (mVectorCount) {		  qsort((void*)mVectorInfoArray,(size_t)mVectorCount,sizeof(VectorInfo*),compare);	  }	}}