Hi Phil, Yes I could use strduped strings to avoid this case but at this point I just want to have sure that if I do that mistake in future (trying to change a const str *) the compiler at last warns me about it :). In the real case this function is called with a buffer from a readed file so that it's first parameter aways point to valid lvalue data, but I (or other) may change the code in future and try to call it with string constants, I would like to prevent my self from doing that and if it happen have a better clue of what happen. Your anwser apply just as I expected. Cheers, 2016-07-08 9:59 GMT-03:00 Phil Sutter <phil@xxxxxx>: > On Fri, Jul 08, 2016 at 09:33:03AM -0300, Daniel. wrote: >> Hi all thanks for the reply. >> >> I think I wasn't clear. Here is a working example: http://codepad.org/0SUG6IcQ >> >> The function get_pair_from_string() should I) remove trailing spcaes, II) return >> the address for key and value using it's last parameters. The problem is that >> since I modify the first parameter calling with strings constants generates a >> segmentation fault. This is because strings constans aren't modifiable. I wan't >> to have better hints when this happen than just "SEGSEGV". I think that the >> -Wwrite-strings is what I was looking for :D, thanks Phil!!! > > Glad I could help. > >> John, I'll be in production, but not at this time. Luckly, that >> function is file scoped >> so I don't have to bother that much. Still I like to avoid the crypt >> "SEGSEGV" error >> message as much as possible. Usually I assert for NULL pointers and give a nice >> error message but this case is trickier. I'll take Phil advice and use >> -Wwrite-strings > > Calling 'SIGSEGV' an error message is a slight underestimation. Actually > your program simply crashes. The gcc warning to activate will just help > to keep your code sane, not improve run-time behaviour. > > If you want to modify strings no matter whether they are constant or > not, strdup() them into a local variable and work with that. Especially > since it's just for parsing as your example shows. Just keep in mind > that you will have to free the duplicated string at some point, > otherwise you will have a memory leak (which at some point will lead to > an equally cryptic message as your segfault did). > > Cheers, Phil -- "Do or do not. There is no try" Yoda Master -- To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html