diff -Nru orig/crlmm/src/utils.c patched/crlmm/src/utils.c
--- orig/crlmm/src/utils.c	2024-10-24 01:44:14.000000000 +0200
+++ patched/crlmm/src/utils.c	2025-03-04 13:01:02.338411100 +0100
@@ -53,7 +53,7 @@
     if (classvec[i] == class)
       n++;
 
-  double *buffer=Calloc(n, double);
+  double *buffer=R_Calloc(n, double);
   for (i = 0; i < cols; i++)
     if (classvec[i] == class){
       buffer[j]=datavec[i];
@@ -74,13 +74,13 @@
   m1[i_ext + (class-1) * rows]=sum;
   m2[i_ext + (class-1) * rows]=sum2;
   m3[i_ext + (class-1) * rows]=j;
-  Free(buffer);
+  R_Free(buffer);
 }
 
 void trimmed_stats(double *data, double *m1, double *m2, double *m3, int *class, int rows, int cols, double *trim){
   int i, j, n1, n2, n3;
-  double *datvec=Calloc(cols,double);
-  int *classvec=Calloc(cols,int);
+  double *datvec=R_Calloc(cols,double);
+  int *classvec=R_Calloc(cols,int);
 
   for (i=0; i < rows; i++){
     n1=0;
@@ -109,14 +109,14 @@
     trimmed_mean(datvec, classvec, 2, trim[0], cols, rows, m1, m2, m3, i);
     trimmed_mean(datvec, classvec, 3, trim[0], cols, rows, m1, m2, m3, i);
   }
-  Free(datvec);
-  Free(classvec);
+  R_Free(datvec);
+  R_Free(classvec);
 }
 
 double  median(double *x, int length){
   int half;
   double med;
-  double *buffer = Calloc(length,double);
+  double *buffer = R_Calloc(length,double);
   memcpy(buffer,x,length*sizeof(double));
   half = (length + 1)/2;
   rPsort(buffer, length, half-1);
@@ -125,7 +125,7 @@
     rPsort(buffer, length, half);
     med = (med + buffer[half])/2.0;
   }
-  Free(buffer);
+  R_Free(buffer);
   return med;
 }
 
@@ -138,7 +138,7 @@
     if (classvec[i] == class)
       n++;
 
-  double *buffer=Calloc(n, double);
+  double *buffer=R_Calloc(n, double);
 
   for (i = 0; i < cols; i++)
     if (classvec[i] == class){
@@ -150,7 +150,7 @@
     buffer[i] = fabs(buffer[i]-m1[i_ext + (class-1) * rows]);
   m2[i_ext + (class-1) * rows] = median(buffer, n);
   m3[i_ext + (class-1) * rows] = n;
-  Free(buffer);
+  R_Free(buffer);
 }
 
 SEXP normalizeBAF(SEXP theta, SEXP cTheta){
@@ -205,8 +205,8 @@
 
 static void mad_stats(double *data, double *m1, double *m2, double *m3, int *class, int rows, int cols, double *trim){
   int i, j, n1, n2, n3;
-  double *datvec=Calloc(cols,double);
-  int *classvec=Calloc(cols,int);
+  double *datvec=R_Calloc(cols,double);
+  int *classvec=R_Calloc(cols,int);
 
   for (i=0; i < rows; i++){
     n1=0;
@@ -235,8 +235,8 @@
     mad_median(datvec, classvec, 2, trim[0], cols, rows, m1, m2, m3, i);
     mad_median(datvec, classvec, 3, trim[0], cols, rows, m1, m2, m3, i);
   }
-  Free(datvec);
-  Free(classvec);
+  R_Free(datvec);
+  R_Free(classvec);
 }
 
 
