refactored tagging support

diff --git a/skeletons/constraints.c b/skeletons/constraints.c
index a7dce95..862d8f1 100644
--- a/skeletons/constraints.c
+++ b/skeletons/constraints.c
@@ -112,12 +112,13 @@
 
 	
 	va_start(ap, fmt);
-	ret = vsnprintf(buf, len, fmt, ap);
+	ret = vsnprintf(p, len, fmt, ap);
 	va_end(ap);
 	if(ret < 0 || ret >= (ssize_t)len) {
 		ret = sizeof("<broken vsnprintf>") - 1;
 		memcpy(buf, "<broken vsnprintf>", ret + 1);
+		p = buf;
 	}
 
-	cb(buf, ret, key);
+	cb(p, ret, key);
 }