diff --git a/com.oracle.truffle.r.test.native/packages/testrffi/testrffi/R/testrffi.R b/com.oracle.truffle.r.test.native/packages/testrffi/testrffi/R/testrffi.R
index 54c5c79209d12d65cbee830a6d24a19af28e9fc4..48d34db470d1bc751044c3411b51a433f78c5d02 100644
--- a/com.oracle.truffle.r.test.native/packages/testrffi/testrffi/R/testrffi.R
+++ b/com.oracle.truffle.r.test.native/packages/testrffi/testrffi/R/testrffi.R
@@ -78,6 +78,10 @@ rffi.r_home <- function() {
 	.Call("r_home", PACKAGE = "testrffi")
 }
 
+rffi.char_length <- function(x) {
+	.Call("char_length", PACKAGE = "testrffi", x)
+}
+
 rffi.mkStringFromChar <- function() {
 	.Call("mkStringFromChar", PACKAGE = "testrffi")
 }
diff --git a/com.oracle.truffle.r.test.native/packages/testrffi/testrffi/src/testrffi.c b/com.oracle.truffle.r.test.native/packages/testrffi/testrffi/src/testrffi.c
index 771587f95b8d1c384aa93b646a37563a6f0d1d04..b8f04f014f1932f69092eaeda8e7e26737c065e7 100644
--- a/com.oracle.truffle.r.test.native/packages/testrffi/testrffi/src/testrffi.c
+++ b/com.oracle.truffle.r.test.native/packages/testrffi/testrffi/src/testrffi.c
@@ -219,6 +219,15 @@ SEXP r_home(void) {
 	return mkString(R_Home);
 }
 
+SEXP char_length(SEXP x) {
+	const char *cx = R_CHAR(STRING_ELT(x, 0));
+	int count  = 0;
+	while (*cx++ != 0) {
+		count++;
+	}
+	return ScalarInteger(count);
+}
+
 SEXP mkStringFromChar(void) {
 	return mkString("hello");
 }
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
index f6159aecd7e41521b283e9fdec07e9924b6252e5..6ed10247f02af0042cba428563448e5dd1bd96fb 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/ExpectedTestOutput.test
@@ -119998,6 +119998,10 @@ NULL
 #{ library("testrffi", lib.loc = "tmptest/com.oracle.truffle.r.test.rpackages"); x <- rffi.addDouble(2, 3); detach("package:testrffi", unload=T); x }
 [1] 5
 
+##com.oracle.truffle.r.test.rffi.TestRFFIPackage.testRFFI20#
+#{ library("testrffi", lib.loc = "tmptest/com.oracle.truffle.r.test.rpackages"); x <- "12345"; x <- rffi.char_length(x); detach("package:testrffi", unload=T); x }
+[1] 5
+
 ##com.oracle.truffle.r.test.rffi.TestRFFIPackage.testRFFI3#
 #{ library("testrffi", lib.loc = "tmptest/com.oracle.truffle.r.test.rpackages"); x <- rffi.populateIntVector(5); detach("package:testrffi", unload=T); x }
 [1] 0 1 2 3 4
diff --git a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rffi/TestRFFIPackage.java b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rffi/TestRFFIPackage.java
index 40270c5de51f4b35661184065b85a52780d0e742..400a9c7b8f90f0a833c0fa568b46212095152d8c 100644
--- a/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rffi/TestRFFIPackage.java
+++ b/com.oracle.truffle.r.test/src/com/oracle/truffle/r/test/rffi/TestRFFIPackage.java
@@ -160,4 +160,9 @@ public class TestRFFIPackage extends TestRPackages {
     public void testRFFI19() {
         assertEvalWithLibWithSetup("x <- 1; ", "rffi.findvar(\"x\", globalenv())");
     }
+
+    @Test
+    public void testRFFI20() {
+        assertEvalWithLibWithSetup("x <- \"12345\"; ", "rffi.char_length(x)");
+    }
 }