diff options
Diffstat (limited to 'packages')
-rw-r--r-- | packages/patches/fix_gui_%_crash-0.42-4.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/patches/fix_gui_%_crash-0.42-4.patch b/packages/patches/fix_gui_%_crash-0.42-4.patch new file mode 100644 index 00000000..02c39313 --- /dev/null +++ b/packages/patches/fix_gui_%_crash-0.42-4.patch @@ -0,0 +1,29 @@ +Index: x_gui.c +=================================================================== +--- x_gui.c (revision 11016) ++++ x_gui.c (working copy) +@@ -49,6 +49,9 @@ + { + char buf[4*MAXPDSTRING]; + char namebuf[80]; ++ char sprintfbuf[MAXPDSTRING]; ++ char *afterpercent; ++ t_int afterpercentlen; + t_gfxstub *x; + t_symbol *s; + /* if any exists with matching key, burn it. */ +@@ -71,7 +74,13 @@ + x->x_key = key; + x->x_next = gfxstub_list; + gfxstub_list = x; +- sprintf(buf, cmd, s->s_name); ++ /* only replace first %s so sprintf() doesn't crash */ ++ afterpercent = strchr(cmd, '%') + 2; ++ afterpercentlen = afterpercent - cmd; ++ strncpy(sprintfbuf, cmd, afterpercentlen); ++ sprintfbuf[afterpercentlen] = '\0'; ++ sprintf(buf, sprintfbuf, s->s_name); ++ strncat(buf, afterpercent, (4*MAXPDSTRING) - afterpercentlen); + sys_gui(buf); + } + |