#293 space character in gui labels causes disaster

open-fixed
puredata (375)
5
2013-10-06
2010-02-08
No

Steps to reproduce:

1 - Open the attached patch

Note the size of the radio and toggle. Note also they have "send" symbols set to "xxx" and "yyy" respectively

2 - Click on the big bang at the top

This composes a symbol containing space characters and sends it as a label to both the radio and the toggle.

This seems to work: the label is actually set with spaces, and the radio and toggle still work.

However, if you right-click on any of them and try to select "properties", the properties dialog won't open

3 - Now save the patch and close it

4 - Open the patch again. The radio and toggle properties have been completely "reset": their size have been reset to default, and also the "number" property of the radio. They have lost their "send" symbol too: you can see the outlet and if you use them, the "r" objects won't receive anything.

However, if you open the properties dialog of the radio or toggle, you'll see that the "send" property is still there (not the same can be said for the size and number); if you now do Apply or Ok, the send symbol will be restored.

So, spaces in the label of a gui object cause weirdnesses and potential disaster. Note that data is lost (the properties of the gui objects) if the patch is saved after assigning such a label, and i is lost silently with no error message at any moment.

There are ather "forbidden" characters ithat don't behave properly n labels, such as the open square bracket "[" (as reported in another bug report). However the space character is more disatrous as it causes data loss.
Object should either accept ALL characters for a label, or properly detect and refuse forbidden characters, which should be documented, avoiding unexpected consequences.

Discussion

1 2 > >> (Page 1 of 2)
  • the bug.pd file does not correctly show the labels with blanks after reloading but it doesn't throw any warnings)

    however, the bugfix-patch doesn't work for me.

    nevertheless the problem is known and is not in the pd->gui communication, but rather in the way the label is stored on disk (and then interpreted on reload):
    afaict, blanks (and other special chars) really must be escaped with backslash (e.g. "A\ A\ A") when saved to disk

     
  • added another patch (0002_*) that implements escaping spaces and tabs when saving the files to disk.

    i guess both patches should be applied for full fun.

     
  • Note the much simpler way the "number box" finesses this problem. I'm scared of adding
    code to m_binbuf.c to escape spaces (what will happen when we later allow backslashes
    into the mix?). But without the binbuf patch the fix to the IEM guis doesn't work - so I'm
    tempted for now just to do as in the number box - it's not incompatible to "do it right" at
    some ater date when we can thonk the whole thing through (it's all over the Pd code and all
    needs to be figured out together).

     
  • Patch #0001 should be applied regardless. Its a simple fix that also address having characters like " [ ] in labels.

    As for patch #0002 , the iemguis also replace spaces with _ when you enter the name in the Properies panel. Symbols can have spaces, and you can set the label with a [label symbol( message, so as IOhannes pointed out, the missing piece of the puzzle is saving properly. Since patch #0002 makes Pd write out the file format that is already supported, I think it would be good to include it.

    Then strnescape() will also have to change when we implement proper escaping support throughout Pd. Unless you have plans to implement that in 0.44, I think its definitely worth including incremental solutions like patch #0002

     
1 2 > >> (Page 1 of 2)


Anonymous


Cancel   Add attachments