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)); } }