diff --git a/pd/src/s_inter.c b/pd/src/s_inter.c
index d805ef898a0dee82d313fe1741e67ddc81aad5be..e1e54c1efd5a9349aab59ffb3b3aee30021e0ae6 100644
--- a/pd/src/s_inter.c
+++ b/pd/src/s_inter.c
@@ -775,17 +775,22 @@ static void escape_double_quotes(const char *src) {
         sys_vgui("\"%s\"", src);
     else
     {
-        char *dest = (char *)t_getbytes((len+1)*sizeof(*dest));
+        char *dest = (char *)t_getbytes((len+dq+1)*sizeof(*dest));
+        char *tmp = dest;
         s = src;
         while(*s++)
         {
             if (*s == '\"')
-                *dest++ = '\\', *dest++ = '\"';
+            {
+                *tmp++ = '\\';
+                *tmp++ = '\"';
+            }
             else
-                *dest++ = *s;
+                *tmp++ = *s;
         }
+        *tmp = '\0'; /* null terminate */
         sys_vgui("\"%s\"", dest);
-        t_freebytes(dest, (len+1)*sizeof(*dest));
+        t_freebytes(dest, (len+dq+1)*sizeof(*dest));
     }
 }