diff --git a/src/m_tokenizer.c b/src/m_tokenizer.c
index 18569b24edc0c29db50ff2c488de772875664009..e1310f98f062c6ae338637c88a510c3424015b85 100644
--- a/src/m_tokenizer.c
+++ b/src/m_tokenizer.c
@@ -15,8 +15,10 @@
 tokenizer_t *Tokenizer_Open(const char *inputString, size_t len, unsigned numTokens)
 {
 	tokenizer_t *tokenizer = Z_Malloc(sizeof(tokenizer_t), PU_STATIC, NULL);
+	const size_t lenpan = len+1;
 
-	tokenizer->zdup = malloc(len);
+	tokenizer->zdup = malloc(lenpan);
+	tokenizer->zdup[len] = 0x00;
 
 	tokenizer->input = M_Memcpy(tokenizer->zdup, inputString, len);
 	tokenizer->startPos = 0;
diff --git a/src/m_tokenizer.h b/src/m_tokenizer.h
index 013a310e8fa20144e3c23d57a7aed962d8ae2245..7ee856b3c9331d8dbb0b97711bd5e8bcae7ec2e7 100644
--- a/src/m_tokenizer.h
+++ b/src/m_tokenizer.h
@@ -16,7 +16,7 @@
 
 typedef struct Tokenizer
 {
-	void *zdup;
+	char *zdup;
 	const char *input;
 	unsigned numTokens;
 	UINT32 *capacity;