diff --git a/tools/gcc-bridge/compiler/src/test/resources/org/renjin/gcc/varargs.c b/tools/gcc-bridge/compiler/src/test/resources/org/renjin/gcc/varargs.c index 9824e870c6..8747f5ac36 100644 --- a/tools/gcc-bridge/compiler/src/test/resources/org/renjin/gcc/varargs.c +++ b/tools/gcc-bridge/compiler/src/test/resources/org/renjin/gcc/varargs.c @@ -38,4 +38,19 @@ void test_varargs_invocation() { ASSERT(varargs_i(1, 91, 92, 93) == 92); ASSERT(varargs_i(2, 91, 92, 93) == 93); -} \ No newline at end of file +} + +char * invoke_vsnprintf(char *fmt, ...) { + char *x = malloc(100); + va_list args; + va_start(args, fmt); + vsnprintf(x, 100, fmt, args); + va_end(args); + return x; +} + +void test_vsnprintf() { + + ASSERT(strcmp(invoke_vsnprintf("Hello %s, you have %d messages", "Bob", 99), "Hello Bob, you have 99 messages") == 0); + +} diff --git a/tools/gcc-bridge/runtime/src/main/java/org/renjin/gcc/runtime/Stdlib.java b/tools/gcc-bridge/runtime/src/main/java/org/renjin/gcc/runtime/Stdlib.java index 41a80d619c..8959d2dbf2 100644 --- a/tools/gcc-bridge/runtime/src/main/java/org/renjin/gcc/runtime/Stdlib.java +++ b/tools/gcc-bridge/runtime/src/main/java/org/renjin/gcc/runtime/Stdlib.java @@ -317,6 +317,10 @@ public static int sprintf(BytePtr string, BytePtr format, Object... arguments) { return snprintf(string, Integer.MAX_VALUE, format, arguments); } + public static int vsnprintf(BytePtr string, int limit, BytePtr format, Object... arguments) { + return snprintf(string, limit, format, arguments); + } + public static int snprintf(BytePtr string, int limit, BytePtr format, Object... arguments) { String outputString;