diff --git a/src/testHCHAMELEON.c b/src/testHCHAMELEON.c
index 2244ba770c5709ef0f086e3a2c9dca549316b646..cfc81db79394ff25edf47490574e233ab9fc2cb6 100644
--- a/src/testHCHAMELEON.c
+++ b/src/testHCHAMELEON.c
@@ -1,6 +1,16 @@
 #include "main.h"
 #include <fenv.h>
 
+#if defined(HAVE_CHAMELEON) && defined(CHAMELEON_USE_HMAT)
+#include <chameleon/runtime.h>
+
+int get_worker_id( void )
+{
+    return RUNTIME_thread_rank( NULL );
+}
+
+#endif
+
 /*! \brief Runs the test of H-chameleon matrices : gemv, solve
  */
 int testHCHAMELEON(void) {
@@ -13,7 +23,7 @@ int testHCHAMELEON(void) {
   Mpf_printf(MPI_COMM_WORLD,"<PERFTESTS> HRecompressionAccuracy = %.4e \n", mpf_hmat_settings.epsilon);
 
   //feenableexcept (FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW) ;
-  hmat_set_worker_index_function((int (*)(void))RUNTIME_thread_rank);
+  hmat_set_worker_index_function( get_worker_id );
 
   ierr = MPI_Comm_rank(MPI_COMM_WORLD, &rank); CHKERRQ(ierr);