won't overwrite buffer (using snprintf)