With gcc, there are a lot of warnings in the csound code about the conversion to char* from a string literal (eg: char *foo = "something"). I'm wondering if that warning is correct: either the string is modifiable and should not be set to a constant, or the string is not modifiable and should be marked as such. Note that while the following code might work, it is mere luck: char* foo="hello"; foo[2]='z'; For example, it may affect other sections of the program that use a "hello" literal string (due to string pooling), or break under other situations due to compiler optimizations. Moreover, the string literals may be destroyed after the function ends, so if the data has been passed to, eg, an OENTRY structure, then there is unpredictable behaviour. Changing this should not be difficult, but it will almost certainly be time-consuming. I have started working on this, but I am not familiar with the csound api, so I'm not sure if some stuff is wrong or not. Basically the question boils down to: are char* variables in several structs really intended to be modifiable or they should be const? I can't really understand because most of those seem like they should be const to me, but there is code that fails to compile or raises new warnings if I set the const attribute. So there are 2 questions: is const-correctness a goal worth pursuing? If so, which pointer variables should be const? PD: of course I don't expect a complete answer to question 2, but a general pointer on determining the answer could be helpful. -- Felipe Sateler