diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 3952b27c..8e9d4c2a 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -14,6 +14,7 @@ ADD_FLUID_TEST(test_sfont_loading)
 ADD_FLUID_TEST(test_sample_rate_change)
 ADD_FLUID_TEST(test_preset_sample_loading)
 ADD_FLUID_TEST(test_seqbind_unregister)
+ADD_FLUID_TEST(test_snprintf)
 
 if ( LIBSNDFILE_HASVORBIS )
     ADD_FLUID_TEST(test_sf3_sfont_loading)
diff --git a/test/test_snprintf.c b/test/test_snprintf.c
new file mode 100644
index 00000000..ae0da198
--- /dev/null
+++ b/test/test_snprintf.c
@@ -0,0 +1,23 @@
+
+#include "test.h"
+#include "utils/fluidsynth_priv.h"
+
+// this test makes sure FLUID_SNPRINTF uses a proper C99 compliant implementation
+
+int main(void)
+{
+    char buf[2+1];
+
+    int ret = FLUID_SNPRINTF(buf, sizeof(buf), "99");
+    TEST_ASSERT(ret == 2);
+
+    TEST_ASSERT(buf[2] == '\0');
+
+    ret = FLUID_SNPRINTF(buf, sizeof(buf), "999");
+    TEST_ASSERT(ret == 3);
+
+    // output truncated, buffer must be NULL terminated!
+    TEST_ASSERT(buf[2] == '\0');
+
+    return EXIT_SUCCESS;
+}