Blob Blame History Raw
diff -rupN --no-dereference gmsh-4.12.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c gmsh-4.12.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c
--- gmsh-4.12.2-source/contrib/hxt/tetMesh/src/hxt_tetRefine.c	2024-01-11 11:22:46.000000000 +0100
+++ gmsh-4.12.2-source-new/contrib/hxt/tetMesh/src/hxt_tetRefine.c	2024-01-27 23:09:41.938171865 +0100
@@ -297,11 +297,11 @@ static uint64_t* scanbsearch(uint64_t* a
  *  - startTet[maxThreads] = mesh->tetrahedra.num
  *  - `startPt[t+1] - startPt[t]` gives how many point will be created by thread t
  */
-static HXTStatus balanceRefineWork(HXTMesh* mesh, uint32_t* startPt, size_t* startTet, int maxThreads)
+static HXTStatus balanceRefineWork(HXTMesh* mesh, uint32_t* startPt, uint64_t* startTet, int maxThreads)
 {
-  size_t* scan;
+  uint64_t* scan;
   uint32_t ptPerThreadGoal;
-  HXT_CHECK( hxtAlignedMalloc(&scan, sizeof(size_t) * mesh->tetrahedra.num) );
+  HXT_CHECK( hxtAlignedMalloc(&scan, sizeof(uint64_t) * mesh->tetrahedra.num) );
 
   #pragma omp parallel num_threads(maxThreads)
   {
@@ -318,9 +318,9 @@ static HXTStatus balanceRefineWork(HXTMe
     #pragma omp single
     {
       // we do a simple prefix sum
-      size_t sum = 0;
+      uint32_t sum = 0;
       for(int t=0; t<maxThreads; t++) {
-        size_t tsum = sum + startPt[t];
+        uint32_t tsum = sum + startPt[t];
         startPt[t] = sum;
         sum = tsum;
       }
@@ -334,16 +334,16 @@ static HXTStatus balanceRefineWork(HXTMe
     // each thread finish the prefix sum in its own array
     #pragma omp for
     for(uint64_t i=0; i<mesh->tetrahedra.num; i++) {
-      size_t inc = scan[i];
+      uint64_t inc = scan[i];
       scan[i] = s;
       s += inc;
     }
 
-    size_t scanToFind = threadID * ptPerThreadGoal;
+    uint64_t scanToFind = threadID * ptPerThreadGoal;
 
     // we want to find i such that scan[i] = scanToFind.
     // we do a simple binary search in the prefix scan array to find `i`
-    size_t* pfnd = scanbsearch(scan, scanToFind, mesh->tetrahedra.num);
+    uint64_t* pfnd = scanbsearch(scan, scanToFind, mesh->tetrahedra.num);
     startTet[threadID] = pfnd  - scan;
     if(startTet[threadID] < mesh->tetrahedra.num)
       startPt[threadID] = *pfnd;