@@ -212669,7 +212669,7 @@ int distanceBufferInsertIdx(const float *aDistances, int nSize, int nMaxSize, fl
212669212669 return nSize < nMaxSize ? nSize : -1;
212670212670}
212671212671
212672- void bufferInsert(void *aBuffer, int nSize, int nMaxSize, int iInsert, int nItemSize, const void *pItem, void *pLast) {
212672+ void bufferInsert(u8 *aBuffer, int nSize, int nMaxSize, int iInsert, int nItemSize, const u8 *pItem, u8 *pLast) {
212673212673 int itemsToMove;
212674212674
212675212675 assert( nMaxSize > 0 && nItemSize > 0 );
@@ -212687,7 +212687,7 @@ void bufferInsert(void *aBuffer, int nSize, int nMaxSize, int iInsert, int nItem
212687212687 memcpy(aBuffer + iInsert * nItemSize, pItem, nItemSize);
212688212688}
212689212689
212690- void bufferDelete(void *aBuffer, int nSize, int iDelete, int nItemSize) {
212690+ void bufferDelete(u8 *aBuffer, int nSize, int iDelete, int nItemSize) {
212691212691 int itemsToMove;
212692212692
212693212693 assert( nItemSize > 0 );
@@ -212850,8 +212850,8 @@ static void diskAnnSearchCtxMarkVisited(DiskAnnSearchCtx *pCtx, DiskAnnNode *pNo
212850212850 if( iInsert < 0 ){
212851212851 return;
212852212852 }
212853- bufferInsert(pCtx->aTopCandidates, pCtx->nTopCandidates, pCtx->maxTopCandidates, iInsert, sizeof(DiskAnnNode*), &pNode, NULL);
212854- bufferInsert(pCtx->aTopDistances, pCtx->nTopCandidates, pCtx->maxTopCandidates, iInsert, sizeof(float), &distance, NULL);
212853+ bufferInsert((u8*) pCtx->aTopCandidates, pCtx->nTopCandidates, pCtx->maxTopCandidates, iInsert, sizeof(DiskAnnNode*), (u8*) &pNode, NULL);
212854+ bufferInsert((u8*) pCtx->aTopDistances, pCtx->nTopCandidates, pCtx->maxTopCandidates, iInsert, sizeof(float), (u8*) &distance, NULL);
212855212855 pCtx->nTopCandidates = MIN(pCtx->nTopCandidates + 1, pCtx->maxTopCandidates);
212856212856}
212857212857
@@ -212872,17 +212872,17 @@ static void diskAnnSearchCtxDeleteCandidate(DiskAnnSearchCtx *pCtx, int iDelete)
212872212872 assert( pCtx->aCandidates[iDelete]->pBlobSpot == NULL );
212873212873
212874212874 diskAnnNodeFree(pCtx->aCandidates[iDelete]);
212875- bufferDelete(pCtx->aCandidates, pCtx->nCandidates, iDelete, sizeof(DiskAnnNode*));
212876- bufferDelete(pCtx->aDistances, pCtx->nCandidates, iDelete, sizeof(float));
212875+ bufferDelete((u8*) pCtx->aCandidates, pCtx->nCandidates, iDelete, sizeof(DiskAnnNode*));
212876+ bufferDelete((u8*) pCtx->aDistances, pCtx->nCandidates, iDelete, sizeof(float));
212877212877
212878212878 pCtx->nCandidates--;
212879212879 pCtx->nUnvisited--;
212880212880}
212881212881
212882212882static void diskAnnSearchCtxInsertCandidate(DiskAnnSearchCtx *pCtx, int iInsert, DiskAnnNode* pCandidate, float distance){
212883212883 DiskAnnNode *pLast = NULL;
212884- bufferInsert(pCtx->aCandidates, pCtx->nCandidates, pCtx->maxCandidates, iInsert, sizeof(DiskAnnNode*), &pCandidate, &pLast);
212885- bufferInsert(pCtx->aDistances, pCtx->nCandidates, pCtx->maxCandidates, iInsert, sizeof(float), &distance, NULL);
212884+ bufferInsert((u8*) pCtx->aCandidates, pCtx->nCandidates, pCtx->maxCandidates, iInsert, sizeof(DiskAnnNode*), (u8*) &pCandidate, (u8*) &pLast);
212885+ bufferInsert((u8*) pCtx->aDistances, pCtx->nCandidates, pCtx->maxCandidates, iInsert, sizeof(float), (u8*) &distance, NULL);
212886212886 pCtx->nCandidates = MIN(pCtx->nCandidates + 1, pCtx->maxCandidates);
212887212887 if( pLast != NULL && !pLast->visited ){
212888212888 // since pLast is not visited it should have uninitialized pBlobSpot - so it's safe to completely free the node
0 commit comments