diff --git a/com.oracle.truffle.r.native/fficall/src/common/rffi_upcalls.h b/com.oracle.truffle.r.native/fficall/src/common/rffi_upcalls.h
index 3d29cb9f88548f2536114d3b2b9e893a6499d498..6a0da3c3b7b4f2ee895030306691c95b54d5ca1b 100644
--- a/com.oracle.truffle.r.native/fficall/src/common/rffi_upcalls.h
+++ b/com.oracle.truffle.r.native/fficall/src/common/rffi_upcalls.h
@@ -275,6 +275,7 @@ typedef double (*call_Rf_qunif)(double a, double b, double c, int d, int e);
 typedef double (*call_Rf_dunif)(double a, double b, double c, int d);
 typedef double (*call_Rf_punif)(double a, double b, double c, int d, int e);
 typedef double (*call_Rf_runif)(double x, double y);
+typedef SEXP (*call_Rf_match)(SEXP itable, SEXP ix, int nmatch);
 
 typedef SEXP (*call_getvar)();
 
diff --git a/com.oracle.truffle.r.native/fficall/src/truffle_common/unique.c b/com.oracle.truffle.r.native/fficall/src/truffle_common/unique.c
index 30f4e5c2f00a1a2bdbfe99eeee973fdab1ecbd87..bfbe23c5f82fc85abce5a9e272bc5a7c9bbc93b2 100644
--- a/com.oracle.truffle.r.native/fficall/src/truffle_common/unique.c
+++ b/com.oracle.truffle.r.native/fficall/src/truffle_common/unique.c
@@ -31,6 +31,6 @@ SEXP Rf_matchE(SEXP itable, SEXP ix, int nmatch, SEXP env)
 /* used from other code, not here: */
 SEXP Rf_match(SEXP itable, SEXP ix, int nmatch)
 {
-	return R_NilValue;
+	return ((call_Rf_match) callbacks[Rf_match_x])(itable, ix, nmatch);
 }